如何在webpack上使用blueimp-file-upload?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在webpack上使用blueimp-file-upload?相关的知识,希望对你有一定的参考价值。

我在我的网站上使用blueimp-file-upload,我正在使用webpack来组织我的js代码。

我从NPM安装了blueimp-file-upload和jquery.ui.widget

npm install --save blueimp-file-upload
npm install --save jquery.ui.widget

我在我的输入文件中要求blueimp-file-upload

require('blueimp-file-upload')

但是当我运行webpack时,我收到错误:

ERROR in ./~/blueimp-file-upload/js/jquery.fileupload.js
Module not found: Error: Cannot resolve module 'jquery.ui.widget' in E:app-parentcooka-common-websrcmain
esourcesstatic
ode_moduleslueimp-file-uploadjs
@ ./~/blueimp-file-upload/js/jquery.fileupload.js 19:8-22:19 
答案

禁用AMD和CommonJS并使用Browser Global jQuery。

/* The jQuery UI widget factory, can be omitted if jQuery UI is already included */
require('imports?define=>false&exports=>false!blueimp-file-upload/js/vendor/jquery.ui.widget.js');
/* The Iframe Transport is required for browsers without support for XHR file uploads */
require('imports?define=>false&exports=>false!blueimp-file-upload/js/jquery.iframe-transport.js');
/* The basic File Upload plugin */
require('imports?define=>false&exports=>false!blueimp-file-upload/js/jquery.fileupload.js');
/* The File Upload processing plugin */
require('imports?define=>false&exports=>false!blueimp-file-upload/js/jquery.fileupload-process.js');
/* The File Upload validation plugin */
require('imports?define=>false&exports=>false!blueimp-file-upload/js/jquery.fileupload-validate.js');
/* The File Upload Angular JS module */
require('imports?define=>false&exports=>false!blueimp-file-upload/js/jquery.fileupload-angular.js');

这是我用来集成webpack,blueimp-fileupload和angular的配置。或者,您可以在webpack.config.js中配置为正则表达式,以避免重复加载器。

另一答案

如果你正在使用图像:

Webpack抱怨一些不在blueimp-file-upload包中的模块。这是我的工作方式:

Install missing dependencies:

npm i -S blueimp-load-image
npm i -S blueimp-canvas-to-blob

Configure Webpack:

config.resolve = {
   extensions: ['', '.js'],
   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',
      'canvas-to-blob': 'blueimp-canvas-to-blob/js/canvas-to-blob.js',
      'jquery-ui/widget': 'blueimp-file-upload/js/vendor/jquery.ui.widget.js'
   }
};

Include scripts in your app:

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";
另一答案
resolve: {
    extensions: ['', '.js'],
    alias: {
        'jquery-ui/widget': 'blueimp-file-upload/js/vendor/jquery.ui.widget.js'
    }
}
另一答案

我有几乎相同的问题,除了Error宣布不是'jquery.ui.widget'而是'jquery / ui / widget'。 对我来说@Gowrav的回答是错误的。

经过几天的迷恋,我以简单的方式解决了它。刚做了:

npm install jquery-ui

事实是jquery.fileupload.js正在搜索它的供应商:jquery.fileupload.js 但是在jquery.fileupload.js尝试导入依赖项的上下文中,当然无法找到(解析)它。所以我把它添加到项目中。

附:这只是我对所有工作的看法。但这种方式对我有所帮助。

另一答案

jquery.fileupload.js首先检查AMD是否需要导致此错误。你可以教webpack不要在这个文件中使用AMD风格。 (确保npm install imports-loader使用此方法。):

require('imports?define=>false!blueimp-file-upload')

它应该正确地将模块注册为CommonJS,并且需要来自正确位置的jquery.ui.widget

在这里阅读更多:http://webpack.github.io/docs/shimming-modules.html#disable-some-module-styles

另一答案

你可以在jquery.ui.widget的主文件中添加一个别名 - 遗憾的是它没有在package.json中指定一个别名,所以webpack无法找到它。

resolve: {
    alias: {
        "jquery.ui.widget": "node_modules/jquery.ui.widget/jquery.ui.widget.js"
    }
},
另一答案

实际上你可以通过改变你的webpack配置来解决这个问题,只需添加要解决的路径(例如我正在使用bower)

resolve: {
    extensions: [ '', '.js', '.jsx' ],
    modulesDirectories: [
       'node_modules',
       'bower_components', 
       'bower_components/blueimp-file-upload/js/vendor' 
    ]
}
另一答案

在webpack 3.x中,语法如下所示:

  {
    test: require.resolve("blueimp-file-upload"),
    use: "imports-loader?define=>false"
  }
另一答案

首先安装两个插件

npm i blueimp-file-upload --save
npm i jquery-ui --save

然后需要在网络包中

require('blueimp-file-upload/js/jquery.fileupload')

以上是关于如何在webpack上使用blueimp-file-upload?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 webpack 访问全局对象(窗口)?

如何在 Angular 2 应用程序上使用 webpack 进行代码拆分?

使用 React Router 和 Webpack 2 如何仅在某些路由上需要外部库?

如何在webpack上使用blueimp-file-upload?

如何在 ES6+ 的 webpack 中的 node_modules 上使用 babel 加载器?

如何使用 Webpack 的热重载更新 Apollo 服务器上的模式?