我在NodeJS的父目录中遇到麻烦。我已经阅读了这篇文章,但仍然无法弄清楚。
node.js require from parent folder
这是我的文件结构:
-- components/
-- windows/
-- index.js
-- index.js
-- main.js
这是代码:
// /main.js
var components = require("./components")
components.windows.inner()
// /components/index.js
module.exports = {
windows: require("./windows"),
foo: "foo",
}
// /components/windows/index.js
var components = require("./..")
module.exports.inner = function() {
console.log(components.foo)
}
当我运行main.js
时,inner()
函数将打印undefined
。
为什么打印未定义?它不应该打印foo吗?我是否缺少有关Node工作原理的东西?
答案 0 :(得分:2)
您刚刚建立了“循环依赖”。 /components/windows/
要求/components/
,要求/components/windows/
,要求...
尽管如此,要解决这些问题,NodeJS将导出初始化为一个空对象,并在模块初始化后将其重写为exports
对象。因此,您可以从/components/windows
内部访问/components/
,但不能反过来。
要删除循环依赖项,请将foo
移至两个模块中都需要的另一个文件。