我正在尝试在一个使用带有Require.js的AMD模块的项目中引入Webpack。项目结构的相关部分是:
(即项目根文件夹包含一个js
文件夹,其中包含所有应用程序脚本,其入口点为main.js,还有一个tools
文件夹,其中包含npm_modules
和gulp任务我正在建设)
(是的,我知道在项目的根目录中使用npm_modules
和gulpfile
会更简单,但这就是我拥有的结构 < / p>
所以我试图从应用程序划分的AMD模块中构建一个js包。为简化起见,假设main.js文件具有以下代码:
define([
'jquery'
], function (
$
) {
'use strict';
console.log($);
});
这意味着我需要从jquery
./js/libs/vendor/jquery/dist/jquery.js
所以这里是我写的webpack config(树形图上的webpack.js
文件):
var path = require('path');
var appModulesPath = path.resolve('../js'); // gulpfile’s process is run in ./tools folder
var nodeModulesPath = path.join(__dirname, '..', 'node_modules');
console.log(appModulesPath, ' and ', nodeModulesPath); // I confirm that paths are correct
module.exports = {
context: path.join(__dirname, '../../'),
debug: false,
resolve: {
root: [appModulesPath, nodeModulesPath],
alias: {
'jquery': 'libs/vendors/jquery/dist/jquery',
},
extensions: ['.js']
},
entry: ['./js/main'],
output: {
path: path.join(__dirname, '../../js'),
filename: 'bundle.js'
},
module: {
loaders: [
{test: /jquery/, loader: 'exports?$'},
]
}
};
但是当我尝试运行任务时,我收到以下错误:
ERROR in ../js/main.js
Module not found: Error: Cannot resolve module 'exports' in /path/to/project/root/folder/js
@ ../js/main.js 1:0-9:2
如果我正确理解错误,Webpack会尝试并且无法使用exports-loader
。但我安装了它,它位于node_modules
文件夹中。是不是Webpack不知道在哪里寻找node_modules
?但我正在解析配置中的根,当我注销我传递给resolve.root
的路径时,它们是:/path/to/project/root/js
和/path/to/project/root/tools/node_modules
。为什么Webpack不选择exports-loader
?
我没有想法。能否请你帮忙?