当我尝试访问模块时,我在webpack中使用 module.exports
的文件中创建了 util.js
,这会在构建时产生一个空对象 . 在下图中,我的 const utils = require(...)
返回一个空对象 .
但是,当我检查我的主脚本 background-script.js
中的 const utils = require(...)
时,它没有't use a module.exports, it'定义 .
Problem Webpack似乎没有使用我的导出解析 require
's inside the modules I' m .
Project File Structure
app
├──plugins
│ ├── index.js (exports all my plugins)
| ├──plugin1
| │ ├── index.js (simply exports an object)
| |
| |──plugin2
| ├── index.js (simply exports an object)
|
|--utils.js
|--background-script.js
app/background-script.js
const utils = require('../../util.js');
app/utils.js
const utils ={....};
utils.plugins = require('./plugins/index.js');
module.exports = utils;
plugins/index.js
//require all `index.js` file from each plugin directory; works great.
const context = require.context('.', true, /index\.js/);
const requireAllPlugins = function(ctx) {
const keys = ctx.keys();
const values = keys.map(ctx);
return values;
}
const allPlugins = requireAllPlugins(context);
module.exports = [...allPlugins];
plugin1/index.js
//utils is an empty object
const utils = require('../../util.js');
module.exports = {action: utils.renderBookmark}
1 回答
Answering my own question
原来
app/plugins/plugin1/index.js
里面app/plugins/plugin1/index.js
返回空对象的原因是因为我定义了循环/循环依赖 . 基本上,我用我需要模块的方式创建了一个无限循环 . NodeJS以非常具体的方式处理;它返回一个空对象 . 看到这个Stackoverflow答案here循环依赖通常是代码组织不良的结果 . 为了解决我的问题,我删除了
这个npm模块webpack-cyclic-dependency-checker在我开始感知之后帮助我找到了循环依赖,我的代码库中有一个循环依赖 .