2017-03-16 123 views
1

我試圖設置一個簡單的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 

回答

1

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

太棒了,這個工程!非常感謝你 –