文件夹作为模块内的文件夹作为模块NodeJS

时间:2018-11-11 17:31:43

标签: javascript node.js node-modules circular-dependency

我在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工作原理的东西?

1 个答案:

答案 0 :(得分:2)

您刚刚建立了“循环依赖”。 /components/windows/要求/components/,要求/components/windows/,要求...

尽管如此,要解决这些问题,NodeJS将导出初始化为一个空对象,并在模块初始化后将其重写为exports对象。因此,您可以从/components/windows内部访问/components/,但不能反过来。

要删除循环依赖项,请将foo移至两个模块中都需要的另一个文件。