尝试使用Webpack构建AMD模块 - 获取“无法解决模块'导出'”错误

时间:2016-01-10 01:55:24

标签: webpack

我正在尝试在一个使用带有Require.js的AMD模块的项目中引入Webpack。项目结构的相关部分是:

enter image description here

(即项目根文件夹包含一个js文件夹,其中包含所有应用程序脚本,其入口点为main.js,还有一个tools文件夹,其中包含npm_modules和gulp任务我正在建设)

(是的,我知道在项目的根目录中使用npm_modulesgulpfile会更简单,但这就是我拥有的结构 < / 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

我没有想法。能否请你帮忙?

1 个答案:

答案 0 :(得分:4)

呸!花半小时描述问题然后,在最后绝望的搜索尝试找到答案! : - )

解决方案是使用resolveLoader

感谢this对Github的讨论。