我正在导入这样的文件
import "blueimp-file-upload/js/vendor/jquery.ui.widget.js";
import "blueimp-file-upload/js/jquery.iframe-transport.js";
import "blueimp-file-upload/js/jquery.fileupload.js";
import "blueimp-file-upload/js/jquery.fileupload-image.js";
并使用
更改了webpack配置resolve: {
alias: {
'load-image': 'blueimp-load-image/js/load-image.js',
'load-image-meta': 'blueimp-load-image/js/load-image-meta.js',
'load-image-exif': 'blueimp-load-image/js/load-image-exif.js',
'load-image-scale': 'blueimp-load-image/js/load-image-scale.js',
'canvas-to-blob': 'blueimp-canvas-to-blob/js/canvas-to-blob.js',
'jquery-ui/ui/widget': 'blueimp-file-upload/js/vendor/jquery.ui.widget.js'
}
}
受此启发:How to use blueimp-file-upload with webpack?
它编译正常,但我在浏览器控制台中出错
app.js:1391 TypeError: $(...).fileupload is not a function
jQuery是全局定义的 看起来像fileupload插件没有注册。我不明白。
答案 0 :(得分:3)
我也很难尝试让它发挥作用。我放弃了import
语句并改为使用require
。起初,我尝试使用here和require。在我忘记之前,我认为您可以通过在适当的地方向webpack.config.js
添加以下内容来解决您的紧急问题:
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": 'jquery'
})
]);
这导致了其他问题,因为我已经将jQuery
作为静态资产加载到网站上,并且我的模块正在其中注入。
但回到我决心避免所有这些痛苦。
使用imports-loader
时,问题是依赖项的加载顺序,我无法让webpack
和babel
表现出来。然后我发现了imports-loader
安装script-loader
> npm install --save-dev script-loader
然后我就可以删除我的别名,因为它们不再需要了。像魅力一样工作。很想听听有关更好方法的任何建议。
示例: main.js
require('script-loader!blueimp-file-upload/js/vendor/jquery.ui.widget.js');
require('script-loader!blueimp-tmpl/js/tmpl.js');
require('script-loader!blueimp-load-image/js/load-image.all.min.js');
require('script-loader!blueimp-canvas-to-blob/js/canvas-to-blob.js');
require('script-loader!blueimp-file-upload/js/jquery.iframe-transport.js');
require('script-loader!blueimp-file-upload/js/jquery.fileupload.js');
require('script-loader!blueimp-file-upload/js/jquery.fileupload-process.js');
require('script-loader!blueimp-file-upload/js/jquery.fileupload-image.js');
require('script-loader!blueimp-file-upload/js/jquery.fileupload-audio.js');
require('script-loader!blueimp-file-upload/js/jquery.fileupload-video.js');
require('script-loader!blueimp-file-upload/js/jquery.fileupload-validate.js');
require('script-loader!blueimp-file-upload/js/jquery.fileupload-ui.js');