我尝试与新鲜安装laravel 9.20和最低配置
- 在现场配置js中**
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel({
input: [
'resources/js/app.js',
],
refresh: true,
}),
],
});
- 在应用程序js中**
import './bootstrap';
import $ from "jquery";
window.$ = window.jQuery = $;
import '../sass/app.scss';
我也试过这个
import * as $ from "jquery";
window.$ = window.jQuery = $;
在blade中加载资产,并使用此脚本进行测试
@vite(['resources/js/app.js']);
$("#alertbox").alert("test");
但我在控制台中得到以下错误:
未捕获引用错误:未定义$
我弄不动了,你帮帮我吧
2条答案
按热度按时间insrf1ej1#
这是因为Vite的模块加载顺序。您看到了一个争用条件,这不是导入的问题。
要确认这一点,请尝试在超时后调用jQuery代码,如下所示。
如果上面的命令没有错误,那么就意味着代码的执行顺序不正确,但是添加一个超时并不是解决这个问题的好方法,所以让我们来看看问题的原因。
如果你看源代码,你会看到类似这样的东西。
这意味着Vite将脚本作为模块加载。并且模块脚本总是被延迟。因此,如果您的jQuery脚本被放置在Vite指令之后,jQuery代码将在加载jQuery到窗口之前首先执行-这将触发
$ is undefined
错误。在最佳实践中,您应该将jQuery代码移到
app.js
文件中,这样它就可以保留在自己的模块中。另一种处理方法是将您的script标记标记为模块,然后它将遵循文档的加载顺序。如下所示更改脚本标记。
3qpi33ja2#
在刀片模板中添加来自CDN的jquery
https://cdnjs.com/libraries/jquery
并解决它