Laravel Mix始终包含jQuery



我使用Laravel 5.6和Mix。我想在我的项目中加载一个使用jQuery的插件。

我创建了一个文件上传器.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文件中都加载了两次。我该如何防止这种情况发生?感谢

尝试删除

mix.autoload({
jquery: ['$', 'window.jQuery']
});

最新更新