Node.js Module.Exports 未定义的空对象
Node.js Module.Exports Undefined Empty Object
我有以下文件。
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
这是因为在 运行 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
中提取到一个新文件中,然后从两个文件中导入。
我有以下文件。
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
这是因为在 运行 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
中提取到一个新文件中,然后从两个文件中导入。