【发布时间】:2016-09-16 14:19:51
【问题描述】:
我正在构建一个 javascript 库并使用 require() 方法将外部模块要求到其他模块中。我的问题是我需要的模块没有定义。我可以看到所有模块都在 webpack 输出文件中,但在运行时所需的模块返回未定义。
我做了一个实验,将需要的模块移动到输出文件顶部的另一个模块中,这样浏览器首先加载了所需的模块。这解决了问题。
例如:
// main.js
var moduleA = require('./module.a.js');
var main = (function() {
"use strict";
return {
moduleA: moduleA
}
})();
exports.main = main;
// module.a.js
var moduleA = (function() {
"use strict";
return {
myMethod: myMethod
}
})();
exports.moduleA = moduleA;
目前我的webpack.config.js定义入口文件是main.js
var path = require('path');
var webpack = require('webpack');
var libraryName = "myLib";
module.exports = {
entry: './src/modules/main.js',
output: {
path: __dirname+"/build",
filename: libraryName+'.all.js',
library: libraryName,
libraryTarget: 'umd',
umdNamedDefine: true
},
resolve: {
root: [
path.resolve('./src/')
]
},
module: {
loaders: [
// JS
{
test: /.js/,
loader: "babel-loader",
exclude: /node_modules/,
query: {
presets: ['es2015']
}
},
]
}
};
这导致 main.js 首先加载到输出文件中,如果手动重新排序输出文件中的模块以便在我的主模块之前首先读取 moduleA,我该如何使用 webpack 解决这个问题?我的另一个 webpack 构建在输出文件的顶部有入口文件,但它工作正常。
【问题讨论】:
标签: javascript module webpack require