package.json を実行するとbin
command
、syntax error near unexpected token
(' ` が表示されます。
package.json
:
"bin": {
"grabfilenames": "./index.js"
}
npm link
:
/usr/local/bin/grabfilenames -> /usr/local/lib/node_modules/grabfilename/index.js
/usr/local/lib/node_modules/grabfilename -> /Users/dulin/workspace/grabfilename
を実行するとcli
:
grabfilenames -p /Users/dulin/workspace/learn-jquery
エラーが発生します:
/usr/local/bin/grabfilenames: line 1: syntax error near unexpected token `('
/usr/local/bin/grabfilenames: line 1: `const fs = require('fs');'
どうすれば解決できますか? ありがとうございます!
ベストアンサー1
ドキュメントには次のように記載されています:
インストール時に、npm はそのファイルをグローバル インストールの場合は prefix/bin に、ローカル インストールの場合は ./node_modules/.bin/ にシンボリック リンクを作成します。
つまり、npmは特にないファイルにこれを追加すると、Unix 上で実行可能になります。bin
ファイルは、Perl スクリプト、コンパイルされた C プログラム、シェル スクリプト、Ruby スクリプト、または node.js javascript アプリにすることができます。
したがって、アプリを実行するのはnpmではなくOSです。つまり、スクリプトしなければならない実行可能であること(前述したように、コンパイルされたバイナリであっても構いません)。
Unixでは、正しいインタープリタでスクリプトを自動的に実行するには、バンファイルの最初の行として。node.js の場合、通常は次の行を使用します。
#! /usr/bin/env node
一般的には、次のものを使用できます。
#! /whatever/path/to/node
ただし、OS やディストリビューションによっては、node.js が異なる場所にインストールされる場合があります。そのため、/usr/bin/env
デフォルトの環境変数をロードするプログラムがあり、$PATH
これにより、シェルは node.js がインストールされている場所を自動的に検出できるようになります。