如何获得‘;程序名称’;(调用位置)在Node.js中?

如何获得‘;程序名称’;(调用位置)在Node.js中?,node.js,command-line,Node.js,Command Line,对于Node.js,我需要Ruby中的$PROGRAM_NAME,或者C-likes中的ARGV[0]的等价物。当我有这样一个节点脚本时 #!/usr/bin/env node console.log(process.argv[0]) …我得到的是“node”,而不是保存代码的文件名。我该如何解决这个问题?使用文件名?它返回当前正在执行的脚本 您可以使用此选项(如果从main.js文件调用): 或者在任何地方: var path = require('path'); var programNa

对于Node.js,我需要Ruby中的$PROGRAM_NAME,或者C-likes中的ARGV[0]的等价物。当我有这样一个节点脚本时

#!/usr/bin/env node
console.log(process.argv[0])

…我得到的是“node”,而不是保存代码的文件名。我该如何解决这个问题?

使用文件名?它返回当前正在执行的脚本

您可以使用此选项(如果从main.js文件调用):

或者在任何地方:

var path = require('path');
var programName = path.basename(process.argv[1]);

要使用命令行选项字符串,请按子堆栈检查模块。乐观主义者会让你的生活更轻松

var inspect = require('eyespect').inspector();
var optimist = require('optimist')
var path = require('path');
var argv = optimist.argv
inspect(argv, 'argv')
var programName = path.basename(__filename);
inspect(programName, 'programName')
要安装所需的依赖项,请执行以下操作:

npm install -S eyespect optimist

然而,这并不能告诉我它被调用为什么。对于符号链接、包装器脚本(例如npm使用的那些脚本)或其他类似的东西,这将失败。-1用于推送您自己的模块,无需声明;更不用说,我明确要求在Node.js中实现这一点,而不引入额外的模块。(也就是说,乐观主义者是伟大的;它只是不适用于这种情况。NPM并不总是解决方案,也不总是一种选择。)我真的希望有一种更直接的方法,但后者似乎回答了我的问题。我仍然害怕它似乎没有涵盖的边缘案例,但我不能确定一个,所以我接受这个。(=
npm install -S eyespect optimist