8

まず、ターミナルや node.js で作業した経験がほとんどないということから始めます。

同僚が休暇に出かけました。私は、デモ サーバーでアプリをセットアップするために彼が残した指示に従おうとしています。すべてをローカルで実行できますが、socket.io モジュールをインストールするサーバーで問題が発生しています。

インストールされたpython、インストールされたnodejs、両方とも成功しました。しかし、次のコマンドを発行します。

npm install -g socket.io

そして、私が得る出力は次のとおりです。

npm http GET https://registry.npmjs.org/socket.io
npm http 304 https://registry.npmjs.org/socket.io
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/socket.io'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/socket.io']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/socket.io',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/socket.io',
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.

npm ERR! System Linux 2.6.32-279.el6.x86_64
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "socket.io"
npm ERR! cwd /home/qa
npm ERR! node -v v0.8.16
npm ERR! npm -v 1.1.69
npm ERR! path /usr/local/lib/node_modules/socket.io
npm ERR! fstream_path /usr/local/lib/node_modules/socket.io
npm ERR! fstream_type Directory
npm ERR! fstream_class DirWriter
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/socket.io'
npm ERR! fstream_stack DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/qa/npm-debug.log
npm ERR! not ok code 0

私が使用しているアカウントには管理者権限が必要です。グーグルでいくつかの提案を見つけましたが、どれもうまくいかないようでした。コマンドの先頭に sudo を追加しようとしましたが、次のようになりました。

[qa@umr-demo ~]sudo npm install -g socket.io
[sudo] password for qa:
sudo: npm: command not found
4

2 に答える 2

20

特権がない場合も同じエラーが発生するため、-gフラグを使用するときは sudo を使用する必要があります

sudo が npm を認識しない場合は、次を試すことができます。

  • npm の完全なルートを渡す

    $ sudo $(which npm) install -g socket.io
    
  • -E フラグで環境を維持する

    $ sudo -E npm install -g socket.io
    

更新:

実行可能ファイルにのみ-gフラグを使用し、コードで d されているライブラリを (フラグなしで) ローカルにインストールすることをお勧めします。実行可能ファイルをコピーするための権限が必要です。require/usr/bin/usr/local/bin

socket.io サイトでは-g、インストール コマンドにフラグが含まれていないことにも注意してください ;)

詳細: http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

于 2012-12-20T02:18:34.143 に答える
0

Arch Linux を使用している場合はnpm2arch、AUR でパッケージを確認してください。pacman を使用して npm パッケージをインストールできます。

例:

npm2archinstall socket.io
于 2014-03-01T09:54:54.910 に答える