webdevqa.jp.net

NPMのインストールが「wdで実行できません」で失敗しました

Node 0.8.14が既にインストールされている新しいUbuntu 12.04インスタンスにノード環境をセットアップしようとしていますが、npm installを実行しようとすると問題が発生しました。したがって、npm installを試すと、rootまたは管理者として実行する必要があると表示されます。

Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ 'DirWriter._create                 (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR!      'Object.oncomplete (fs.js:297:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

ただし、Sudoとして実行しようとすると、次のように表示されます。

npm WARN cannot run in wd [email protected] npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)

私のpackage.jsonには、次のスクリプトが含まれています。

"scripts": {
    "preinstall": "npm install -g coffee-script node-gyp",
    "start": "node server.js",
    "test": "mocha --require should --compilers coffee:coffee-script --colors"
 },

残りのdevdependenciesは、自分のマシン(Mac)に問題なくインストールしているため有効です。

124
E.H.

ここでOP、私はこの質問を最初に聞いて以来、ノードについて多くのことを学びました。 Dmitryの答えは非常に役に立ちましたが、最終的には、正しい権限でノードをインストールすることでそれができました。

パッケージマネージャーを使用してノードをインストールするのではなく、通常の権限でローカルディレクトリに存在するように自分でコンパイルすることを強くお勧めします。

この記事では、その方法をステップごとに説明します。

https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04

10
E.H.

ドキュメント は(また ここ )と言います:

Npmがルート権限で呼び出された場合、uidは、user configで指定されたユーザーアカウントまたはuidに変更されます。デフォルトはnobodyです。 unsafe-permフラグを設定して、root権限でスクリプトを実行します。

オプションは次のとおりです。

  1. npm installフラグを指定して--unsafe-permを実行します。

    [Sudo] npm install --unsafe-perm
    
  2. unsafe-permフラグをpackage.jsonに追加します。

    "config": {
        "unsafe-perm":true
    }
    
  3. preinstallスクリプトを使用してグローバルモジュールをインストールしないでください。それらを個別にインストールし、ルート権限なしで通常のnpm installを実行します。

    Sudo npm install -g coffee-script node-gyp
    npm install
    

関連

202

私のために働いた唯一のものは、以下を含む.npmrcファイルを追加することでした:

unsafe-perm = true

同じ構成をpackage.jsonに追加しても効果はありませんでした。

31
Undistraction

Rootユーザーを使用してCentOsを実行しているプラ​​イベートサーバーでnodejsアプリを公開しようとすると、同じ問題が発生しました。 package.jsonファイルの "postinstall": "./node_modules/bower/bin/bower install"によって同じエラーが発生するため、私にとって機能していた唯一の解決策は、両方のオプションを使用してエラーを回避することです。

1:bower installコマンドに--allow-rootオプションを使用

"postinstall": "./node_modules/bower/bin/bower --allow-root install"

2:npm installコマンドに--unsafe-permオプションを使用します

npm install --unsafe-perm
25

/usr/localおよび~/Users/user-nameの所有権を次のように変更することにより、これを修正しました。

Sudo chown -R my_name /usr/local

これにより、Sudoなしですべてを行うことができました。

1
Daniel O'Leary