Javascript Node.js模块。导出未定义的空对象

Javascript Node.js模块。导出未定义的空对象,javascript,node.js,circular-dependency,Javascript,Node.js,Circular Dependency,我有以下文件 index.js module.exports = { "first": require('./1.js'), "second": require('./2.js'), "third": require('./3.js') }; module.exports = "Hello"; module.exports = "World"; const utils = require('./'); module.exports = `${utils.first}

我有以下文件

index.js

module.exports = {
    "first": require('./1.js'),
    "second": require('./2.js'),
    "third": require('./3.js')
};
module.exports = "Hello";
module.exports = "World";
const utils = require('./');
module.exports = `${utils.first} ${utils.second}`;
const utils = require('./');
console.log(utils.first);
console.log(utils.second);
console.log(utils.third);
1.js

module.exports = {
    "first": require('./1.js'),
    "second": require('./2.js'),
    "third": require('./3.js')
};
module.exports = "Hello";
module.exports = "World";
const utils = require('./');
module.exports = `${utils.first} ${utils.second}`;
const utils = require('./');
console.log(utils.first);
console.log(utils.second);
console.log(utils.third);
2.js

module.exports = {
    "first": require('./1.js'),
    "second": require('./2.js'),
    "third": require('./3.js')
};
module.exports = "Hello";
module.exports = "World";
const utils = require('./');
module.exports = `${utils.first} ${utils.second}`;
const utils = require('./');
console.log(utils.first);
console.log(utils.second);
console.log(utils.third);
3.js

module.exports = {
    "first": require('./1.js'),
    "second": require('./2.js'),
    "third": require('./3.js')
};
module.exports = "Hello";
module.exports = "World";
const utils = require('./');
module.exports = `${utils.first} ${utils.second}`;
const utils = require('./');
console.log(utils.first);
console.log(utils.second);
console.log(utils.third);
run.js

module.exports = {
    "first": require('./1.js'),
    "second": require('./2.js'),
    "third": require('./3.js')
};
module.exports = "Hello";
module.exports = "World";
const utils = require('./');
module.exports = `${utils.first} ${utils.second}`;
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

这是因为在运行
3.js
时,
index.js
文件尚未完全定义。为了解决这个问题,你必须特别要求这些文件。例如,将
3.js
更改为以下内容将起作用

const first = require('./1.js');
const second = require('./2.js');
module.exports = `${first} ${second}`;
只需删除此行:

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

不能使
index.js
依赖于
3.js
,因为
3.js
依赖于
index.js
(这称为循环依赖)。Nodejs可能在某些特定情况下能够解决它,但我通常不会这样做。相反,将
3.js
使用的部分从
index.js
提取到一个新文件中,然后从这两个文件中导入。

只是好奇:循环依赖关系就是这样解决的吗?就像一个未定义的。我所说的循环dep是指问题中的
索引
3
索引
。我想是的。我刚刚遇到了一个循环依赖类型的东西。我不知道这个名字叫什么,但是是的,这个词听起来很正确。我就是这样解决的。