所以我只是想创建一个npm bin,该bin在当前目录中创建一个文件。
// ./index.js
const program = require('commander');
const fs = require('fs');
const path = require('path');
program
.command('c <name> <content>')
.action((name, content) => {
fs.writeFile(path.resolve(process.cwd(), name), content, err => err ? console.error(err) : console.log('Success'));
});
program.parse(process.argv);
这不是因为fs,即使我用console.log替换了writeFile
,我仍然遇到相同的错误。
这是我的package.json:
{
"name": "test-crayzzit",
"dependencies": {
"commander": "^2.19.0"
},
"bin": {
"testcc": "./index.js"
},
"version": "1.0.3"
}
如果我做类似node index.js test.txt hello
的事情,一切都会很好
但是如果我使用npm安装软件包:sudo npm i -g test-crayzzit
然后testcc c test.txt hello
返回错误:/usr/local/bin/testcc: 1: /usr/local/bin/testcc: Syntax error: "(" unexpected
您可以使用以下软件包自行尝试:https://www.npmjs.com/package/test-crayzzit
答案 0 :(得分:1)
您好像想念shebang。 index.js的第一行应如下所示:
#!/usr/bin/env node
此外,如果您关心在不同平台上使用软件包,则文件应具有LF
行尾,以便在MacOS,Linux和Windows上正确读取。
编辑:我已经测试了您的软件包(在Linux上对我来说是相同的错误)。如上所述添加shebang对我有用。