【发布时间】:2018-03-12 22:11:46
【问题描述】:
我正在尝试将我的公司项目从 JSPM 和 systemJS 转换为 webpack。 所以我从头开始了一个新项目并安装了基本配置。
我需要在项目中包含一个由前同事构建的旧包。该包是用 Jquery 开发的,使用 AMD 定义方法。
于是我搜索并找到了imports-loader。
在我的 webpack 配置中,我有:
{
test: path.resolve(__dirname, 'vendor/module/module.js'),
loader: "imports-loader?this=>window&define=>false"
},
在我的代码中,我有以下内容:
import Module from 'module';
new Module.WindowManager(arg1, arg2);
当我运行 webpack 时,我得到了这个错误:
Uncaught Error: module/wm/window missing module/core/emitter
在我尝试使用模块/核心/发射器的模块中:
define('module/wm/window',
['module/core/emitter'], function (Emitter) { ... });
【问题讨论】:
-
所以,第一个问题:错误说它无法加载模块/核心/发射器,它是否存在于磁盘上?如果是这样,您的配置是否规定
define可以在哪里找到东西指向正确的目录? -
@Mike'Pomax'Kamermans 关于第一个问题,模块/核心/发射器定义在我尝试导入的模块的同一文件中。不明白第二个问题。你指的是哪个配置?是 webpack 配置吗?
-
我创建了一个 github 项目来重现我提到的错误。 github.com/jcrjaci/webpack-tests
-
webpack 不使用
define。我知道的唯一使用它的框架是 require.js,所以我的第一个猜测是你有一些在重写过程中没有正确配置的 require.js 代码。那个 github 项目试图打包一个已经缩小的 .js 文件,所以这使得......好吧,真的没有意义。你为什么要捆绑一个已经捆绑的库? -
@Mike'Pomax'Kamermans 因为缩小的 js 需要 jquery 是全局的。如果我在 html 中导入最小化的 js 和 jquery,它就可以工作。但我只想通过 webpack 和 npm 管理我的外部包。
标签: javascript jquery reactjs webpack ecmascript-6