【发布时间】:2021-09-17 11:29:59
【问题描述】:
我目前有一个程序结构类似于下面的最小示例。我有对象foo
有方法addColor,需要模块bar。
bar 需要baz 并传递参数color。
baz 需要foo 来编辑来自foo 的属性(addColor 必须为foo.colors 添加颜色)
但是在baz内部:foo返回{}并出现以下错误。
foo.colors.push(color);
^
TypeError: Cannot read property 'push' of undefined
我认为这是模块递归的问题,如果不重新构建我的程序,则无法找到解决此问题的方法。
index.js
const foo = require('./foo');
console.log(foo);
// { colors: [ 'red', 'green' ], addColor: [Function (anonymous)] }
foo.addColor('blue');
foo.js
module.exports = {
colors: ['red', 'green'],
addColor: require('./bar')
}
bar.js
const baz = require('./baz');
module.exports = color => {
baz(color);
};
baz.js
const foo = require('./foo');
module.exports = color => {
console.log(foo); // {}
foo.colors.push(color);
/*
foo.colors.push(color);
^
TypeError: Cannot read property 'push' of undefined
*/
};
【问题讨论】:
标签: javascript node.js recursion module require