Node.js Module.Exports未定义的空对象

时间:2018-09-19 03:12:11

标签: javascript node.js

我有以下文件。

index.js

module.exports = {
    "first": require('./1.js'),
    "second": require('./2.js'),
    "third": require('./3.js')
};

1.js

module.exports = "Hello";

2.js

module.exports = "World";

3.js

const utils = require('./');
module.exports = `${utils.first} ${utils.second}`;

run.js

const utils = require('./');
console.log(utils.first);
console.log(utils.second);
console.log(utils.third);

为什么运行node run.js时会显示以下内容?

Hello
World
undefined undefined

我希望它能打印

Hello
World
Hello World

2 个答案:

答案 0 :(得分:1)

这是因为在运行3.jsindex.js文件尚未完全定义。为了解决这个问题,您必须专门要求文件。例如,将3.js更改为以下内容即可。

const first = require('./1.js');
const second = require('./2.js');
module.exports = `${first} ${second}`;

答案 1 :(得分:0)

只需删除此行:

   "third": require('./3.js')

您不能使index.js依赖于3.js,因为3.js依赖于index.js(即循环依赖)。 Nodejs也许能够解决某些特定情况,但是我通常不会这样做。而是将3.js中使用的部分从index.js中提取到新文件中,然后从两者中导入。