在需要时运行不同的代码,而不是直接传递给节点 CLI

run different code when required instead of passed to node CLI directly

我假设可以区分文件是必需的还是直接传递给节点?

例如:

//foo.js
if( ???? ){
  console.log( "This file was required" );
else{
  console.log( "This file was run directly" );
}

当某些其他文件需要它时会输出 "This file was required"

//baz.js
var foo = require('foo.js');

直接传递给节点时会输出"This file was run directly":

$ node foo.js

条件究竟应该是什么样的?

您可以检查 module.parent 以查看它是 运行 全局还是必需的。

documentation 状态

The module that required this one.

意味着如果不需要,则 module.parent 不存在。

if (module.parent) {
    console.log('File is being required.');
} else {
    console.log('File is being run directly.');
}