Папки как модули внутри папок как модули NodeJS - PullRequest
0 голосов
/ 11 ноября 2018

У меня проблемы с запросом родительских каталогов в NodeJS. Я прочитал этот пост, но все еще не мог понять это.

node.js требуется из родительской папки

Это моя файловая структура:

-- 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 голосов
/ 11 ноября 2018

Вы только что создали "круговую зависимость". /components/windows/ требует /components/, что требует /components/windows/, что требует ...

Чтобы разрешить эти проблемы, NodeJS инициализирует экспорт в пустой объект и переписывает их в объект exports после инициализации модуля. Поэтому вы можете получить доступ к /components/windows изнутри /components/, но не наоборот.

Чтобы удалить циклическую зависимость, переместите foo в другой файл, который требуется в обоих модулях.

...