Подтвердить что ты не робот

Могу ли я узнать, в node.js, если мой script запускается напрямую или загружается другим script?

Я только начинаю с node.js, и у меня есть некоторый опыт работы с Python. В Python я мог проверить, была ли переменная __name__ установлена ​​на "__main__", и если бы я знал, что мой script запускается напрямую. В этом случае я мог бы запустить тестовый код или использовать модуль напрямую другими способами.

Есть ли что-либо подобное в node.js?

4b9b3361

Ответ 1

Вы можете использовать module.parent чтобы определить, загружен ли текущий скрипт другим скриптом.

например

a.js:

if (!module.parent) {
    console.log("I'm parent");
} else {
    console.log("I'm child");
}

b.js:

require('./a')

run node a.js выведет:

I'm parent

run node b.js выведет:

I'm child

Ответ 2

Принятый ответ в порядке. Я добавлю это из официальной документации для полноты:

Доступ к основному модулю

Когда файл запускается непосредственно из Node, require.main устанавливается в его module. Это означает, что вы можете определить, был ли файл запущен напрямую, тестируя

require.main === module

Для файла "foo.js" это будет true, если выполняется через node foo.js, но false, если он запущен require('./foo').

Поскольку module предоставляет свойство filename (обычно эквивалентное __filename), точку входа текущего приложения можно получить, проверив require.main.filename.