npm bin返回我“ / usr / local / bin / X:1:/ usr / local / bin / X:语法错误:”(“”意外“在调用它时

时间:2019-03-29 12:54:58

标签: node.js npm

所以我只是想创建一个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

1 个答案:

答案 0 :(得分:1)

您好像想念shebang。 index.js的第一行应如下所示:

#!/usr/bin/env node

此外,如果您关心在不同平台上使用软件包,则文件应具有LF行尾,以便在MacOS,Linux和Windows上正确读取。

编辑:我已经测试了您的软件包(在Linux上对我来说是相同的错误)。如上所述添加shebang对我有用。

另请参阅:Appropriate hashbang for Node.js scripts