laravel - Laravel Mix 总是包含 jQuery
问题描述
我使用 Laravel 5.6 和 Mix。我想将一个使用 jQuery 的插件加载到我的项目中。
我创建了一个fileuploader.js文件:
// see more at http://plugins.krajee.com/file-input#installation
import 'bootstrap-fileinput/js/fileinput';
import 'bootstrap-fileinput/js/locales/fr';
它加载一个 npm 包。在我的webpack.mix.js中,我有:
mix.autoload({
jquery: ['$', 'window.jQuery']
});
mix
.js('resources/assets/js/app.js', 'public/js')
.js('resources/assets/js/fileuploader.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.sass('resources/assets/sass/plugins/fileuploader.scss', 'public/css')
;
mix.copyDirectory('resources/assets/img', 'public/img');
if (mix.inProduction()) {
mix.version();
}
在我的app.js中,我有:
import $ from 'jquery';
window.$ = window.jQuery = $;
import './bootstrap';
$(function() {
// some jQuery code
});
我从bootstrap.js文件中删除了这一行:
window.$ = window.jQuery = require('jquery');
但是当我查看使用 Webpack 生成的 /js/fileuploader.js 文件时,它仍然会加载完整的 jQuery 代码。
我的模板中的结果是:
<script src="http://localhost:8000/js/app.js"></script>
<script src="http://localhost:8000/js/fileupload.js"></script>
<script>
$(function () {
$('input[type="file"]').fileinput({
language: 'fr',
uploadUrl: '/upload',
});
})
</script>
我得到了这个错误:
未捕获的类型错误:$(...).fileinput 不是函数
我想这是因为 jQuery(版本 3.3.1)在两个 JS 文件中加载了 2 次。我怎样才能防止这种情况?谢谢
解决方案
尝试删除
mix.autoload({
jquery: ['$', 'window.jQuery']
});
推荐阅读
- reactjs - 尝试从 ConsenSys 安装 Rimble 但遇到错误。“无法解决依赖关系:react@”^16.9.0,来自 rimble-ui@0.14.0“我该怎么办?
- javascript - 当通过 AJAX 向 FLASK API 发出 POST 请求时,页面会无限次重新加载
- java - 在 ViewPager 中实现按钮不起作用
- python - 如何替换字典所有键中的子字符串
- html - 行反向 flexbox 在移动设备上不能很好地对齐
- javascript - 反应原生 0.63.3 | 使用 chrome 调试器时 setInterval 不起作用
- c# - 我正在尝试找到一种更好的方法来查找数组中第 n 个最稀有的元素
- excel - 遍历 5 个名称并在 MS EXCEL 中的单独工作表中获取结果
- python - 尝试在终端中退出 pdb 时引发 BdbQuit 错误
- react-native - 使用 Reactive Native Debugger 时如何在 node_module 中排除 JavaScript 代码