我正在构建节点js命令行pacakge,当我尝试使用该命令时将一个项目链接到命令行项目时,它试图像在Windows上的js文件一样打开它,而不是作为节点js应用程序。
这是命令行项目package.json:
{
"name": "sitemap-generator",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"commander": "^2.19.0",
"esm": "^3.0.84",
"fs": "0.0.1-security"
},
"bin": {
"smg": "./cli.js"
},
"engines": {
"node": ">=9.5"
}
}
和index.js文件:
'use strict';
const program = require('commander');
program
.version('0.0.1')
.description('Contact management system');
program.parse(process.argv);
错误:
答案 0 :(得分:1)
我相信您要运行的命令是node index.js [arguments]
,而不是直接打开js文件。
答案 1 :(得分:1)
答案是将以下行添加到cli.js文件的顶部:#!/usr/bin/env node
因此文件如下所示:
#!/usr/bin/env node
const program = require('commander');
program
.version('0.0.1')
.description('Contact management system');
program.parse(process.argv);
@mklement0 - #!/usr/bin/env node is an instance of a shebang line...