如何获得‘;程序名称’;(调用位置)在Node.js中?
对于Node.js,我需要Ruby中的$PROGRAM_NAME,或者C-likes中的ARGV[0]的等价物。当我有这样一个节点脚本时如何获得‘;程序名称’;(调用位置)在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
#!/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