npm链接导致javascript语法错误

问题描述:

我试图设置一个简单的CLI与节点。当我运行npm link并尝试使用我的命令时,我得到了记录到控制台的语法错误,以获得完美有效的JS。npm链接导致javascript语法错误

代码

命令行

$ 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 

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

这将我们带到了关于如何指定脚本所在语言的unix标准解决方案:sh bang line。您的脚本应该是这样的,而不是:

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

是,Node.js的支持#!语法,但只有发生在一个文件的第一行吧。

+0

太棒了,这个工程!非常感谢你 –