12

sinopia を使用してプライベート npm レジストリをセットアップしたいので、 を実行npm install -g sinopiaしましたが、エラー メッセージが表示されました。

> crypt3@0.1.8 install /usr/local/lib/node_modules/sinopia/node_modules/crypt3
> node-gyp rebuild

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/4.2.3"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/lib/node_modules/sinopia/node_modules/crypt3/.node-gyp"
make: Entering directory `/usr/local/lib/node_modules/sinopia/node_modules/crypt3/build'
  CXX(target) Release/obj.target/crypt3/crypt3.o
In file included from ../crypt3.cc:7:0:
../node_modules/nan/nan.h:261:25: error: redefinition of âtemplate<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)â
 NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Local<T> val) {
                         ^
../node_modules/nan/nan.h:256:25: error: âtemplate<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)â previously declared here
 NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Handle<T> val) {
                         ^
../node_modules/nan/nan.h:661:13: error: ânode::smallocâ has not been declared
     , node::smalloc::FreeCallback callback
             ^

.hC または C++ に関連するファイルが表示されます。なぜこれが起こるのですか?sinopia 内で見つけたものはすべてJavaScript に関するものです。

何をしnpm installますか?私の意見では、ダウンロード プロセスを開始するだけでよいと思います。

4

3 に答える 3

13

npm install <package>またはnpm install -g <package>意志

  1. 引数で指定した npm パッケージをダウンロードするか、package.json ファイル内で、その依存関係と共に (定義した npm リポジトリ ホストから) node_modules フォルダー内にダウンロードします。(または、既存のローカル コピーを使用します。シュリンク ラッピングを参照してください)

  2. それ自体とその依存関係ごとにpre-installinstallおよびスクリプトを実行します。ライフサイクル スクリプトpost-installを参照してください

  3. -g ディレクティブは、パッケージをグローバル共有 node_modules フォルダー (通常は node がある場所) にインストールするように npm に指示します。これにより、bin が PATH フォルダー (通常は usr/local/bin) にシンボリック リンクされているため、コマンドラインからモジュールにアクセスすることもできます。このリンクを確認してください

sinopia の場合、標準package.jsonファイルはなく、package.yaml ファイルがあります。yampプラグインを確認してください。

公開前のスクリプトを確認すると、含まれています

prepublish: js-yaml package.yaml > package.json

package.yaml を package.json に変換します。package.json では、crypt3 パッケージに依存しています。

crypt3 (sinopia の依存関係の 1 つ) の場合は、package.jsonを確認します。を含む

  "scripts": {
    "test": "node test/test.js",
    "install": "node-gyp rebuild"
  },

そのため、sinopia が npm でインストールされると、その依存関係もすべてダウンロードしてインストールします。crypt3 がインストールされると、「node-gyp rebuild」が実行されます。これが、コンソールにネイティブの c / c++ コンパイル出力が表示される理由です。

あなたはそれを自分で試すことができます

npm install -g node-gyp && node-gyp rebuild

コンソールで

于 2015-12-22T04:21:09.847 に答える
10

ginは、そのnpm install -g特定の npm モジュールをシステム全体 (グローバル) にインストールすることを示すフラグです。オプションを指定しないgと、モジュールはnode_modules-try it!という名前の現在のディレクトリ内にローカルにインストールされます。

グローバルにインストールされたパッケージの場所は、ノードのインストール方法によって異なります。npm list -gコマンドラインに入力して、それらがインストールされている場所を見つけます。

編集: エラーは npm ルート ディレクトリの権限が不十分であることが原因である可能性がありますが、使用しているノードのバージョンがそのライブラリでサポートされていない可能性もあります。node実行する必要がある のバージョンをcrypt3確認し、ノードのバージョンがそれと一致することを確認します ( node -v)。必要なバージョンと一致しない場合は、nvmなどのノード バージョン マネージャーを使用してそのバージョンに切り替え、再試行できnpm installます。

于 2015-12-22T04:06:55.923 に答える
3

npm install -g <package-name>パッケージをシステム全体の node_modules ディレクトリにインストールしようとします (Mac の場合、これは になります"/usr/local/lib/node_modules") 。

于 2015-12-22T04:21:21.590 に答える