2017-03-16 4 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または実マシンコードを作成するもの)のプログラムでなければなりません。私が便宜であると誤解していないなら、それはシェルスクリプトを受け入れて、ユーザのシェルとして設定したものをデフォルトにします。したがって、構文エラーはjavascript構文エラーではありませんが、console.log('hello')は有効なシェル構文ではないため、おそらくbash構文エラーです。

これは、あなたのスクリプトの言語を指定する方法についてUNIXの標準的な解決策につながります:sh bang行。あなたのスクリプトは、代わりに次のようになります。

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

をはい、Node.jsの#!構文をサポートしていますが、それは、ファイルの最初の行に発生した場合にのみ。

+0

素晴らしいです。どうもありがとうございました –

関連する問題