【问题标题】:npm link causes javascript syntax errorsnpm 链接导致 javascript 语法错误
【发布时间】:2017-03-16 15:42:00
【问题描述】:

我正在尝试使用 node.js 设置一个简单的 CLI。当我运行 npm link 并尝试我的命令时,我将语法错误记录到控制台以获取完全有效的 JS。

代码

命令行

$ holla

输出:

/usr/local/bin/holla: line 1: syntax error near unexpected token `'hello''
/usr/local/bin/holla: line 1: `console.log('hello')'

这是我的 package.json:

{
  "name": "npm-cli-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "bin": {
    "holla": "index.js"
  }
}

这是我的 index.js:

console.log('hello')

一些额外的上下文

如果有帮助:

# $PATH variable
/Users/stuartpearman/.rbenv/shims:/Users/stuartpearman/.bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

# npm global packages
/usr/local/lib/node_modules

【问题讨论】:

    标签: node.js shell npm command-line-interface


    【解决方案1】:

    bin 属性需要一个可执行文件。所以holla 可执行文件应该是一个编译的C(或Go 或Pascal 或任何创建真实机器代码的东西)程序。如果我没有误认为方便的话,它还接受 shell 脚本并默认为您配置为用户 shell 的内容。所以语法错误不是 javascript 语法错误,但很可能是 bash 语法错误,因为 console.log('hello') 不是有效的 shell 语法。

    这将我们引向 unix 上关于如何指定脚本所用语言的标准解决方案:sh bang 行。您的脚本应如下所示:

    #! /usr/bin/env node
    console.log('hello');
    

    是的,node.js 支持 #! 语法,但前提是它出现在文件的第一行。

    【讨论】:

      猜你喜欢
      • 2019-01-09
      • 2011-12-14
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      相关资源
      最近更新 更多