NPM不再有效

pra*_*432 35 javascript command-line node.js npm jasmine

所以我没有注意并运行这个命令 -

npm install npm install jasmine-node -g
Run Code Online (Sandbox Code Playgroud)

这导致了这个 -

    npm http GET https://registry.npmjs.org/install
npm http GET https://registry.npmjs.org/jasmine-node
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/install
npm http GET https://registry.npmjs.org/install/-/install-0.1.7.tgz
npm http 200 https://registry.npmjs.org/install/-/install-0.1.7.tgz
npm http 200 https://registry.npmjs.org/jasmine-node
npm http GET https://registry.npmjs.org/jasmine-node/-/jasmine-node-1.4.0.tgz
npm http 200 https://registry.npmjs.org/jasmine-node/-/jasmine-node-1.4.0.tgz
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-1.2.15.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-1.2.15.tgz
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/install'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/install']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/install',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/install',
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 Darwin 12.0.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "npm" "install" "jasmine-node" "-g"
npm ERR! cwd /Users/psanker/Google Drive/Coding/Javascript/WhatsGoingOn
npm ERR! node -v v0.8.17
npm ERR! npm -v 1.2.0
npm ERR! path /usr/local/lib/node_modules/install
npm ERR! fstream_path /usr/local/lib/node_modules/install
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/install'
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! Error: EACCES, mkdir '/usr/local/lib/node_modules/jasmine-node'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/jasmine-node']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/jasmine-node',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/jasmine-node',
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 Darwin 12.0.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "npm" "install" "jasmine-node" "-g"
npm ERR! cwd /Users/psanker/Google Drive/Coding/Javascript/WhatsGoingOn
npm ERR! node -v v0.8.17
npm ERR! npm -v 1.2.0
npm ERR! path /usr/local/lib/node_modules/jasmine-node
npm ERR! fstream_path /usr/local/lib/node_modules/jasmine-node
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/jasmine-node'
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! error rolling back Error: EACCES, unlink '/usr/local/lib/node_modules/npm'
npm ERR! error rolling back  npm@1.2.15 { [Error: EACCES, unlink '/usr/local/lib/node_modules/npm']
npm ERR! error rolling back   errno: 3,
npm ERR! error rolling back   code: 'EACCES',
npm ERR! error rolling back   path: '/usr/local/lib/node_modules/npm' }
npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/npm'
npm ERR!  { [Error: EACCES, unlink '/usr/local/lib/node_modules/npm']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/npm' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.0.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "npm" "install" "jasmine-node" "-g"
npm ERR! cwd /Users/psanker/Google Drive/Coding/Javascript/WhatsGoingOn
npm ERR! node -v v0.8.17
npm ERR! npm -v 1.2.0
npm ERR! path /usr/local/lib/node_modules/npm
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/usr/local/lib/node_modules/npm'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/psanker/Google Drive/Coding/Javascript/WhatsGoingOn/npm-debug.log
npm ERR! not ok code 0
Run Code Online (Sandbox Code Playgroud)

现在,当我试着跑

npm install jasmine-node -g
Run Code Online (Sandbox Code Playgroud)

我明白了

-bash: /usr/local/bin/npm: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

Jua*_*uez 115

当您运行npm install -g somepackage时,您可能会收到EACCES错误,要求您以root/Administrator身份再次运行该命令.这是一个权限问题.

很容易修复,打开终端(应用程序>实用程序>终端)

sudo chown -R $USER /usr/local
Run Code Online (Sandbox Code Playgroud)

**我强烈建议你不要使用sudo包管理(sudo npm -g install something),因为你以后可能会遇到一些问题**

参考:http://foohack.com/2010/08/intro-to-npm/

**更新**

原因是因为这会导致很多其他应用程序的权限问题,所以我建议不要这样做.

全局安装时更好的解决方案:

sudo chown -R `whoami` ~/.npm
Run Code Online (Sandbox Code Playgroud)

  • 我做了这个命令,但是将它限定为node_modules目录./ usr/local/lib/node_modules,它运行得很漂亮. (8认同)
  • 我理解使用单独的用户有利于root访问.我仍然不建议做"sudo chown -R $ USER/usr/local".在这里你要做的是允许/ usr/local中的所有内容到$ USER.我不希望特定的$ USER拥有所有权限.解决方案应该是在/ usr/local或任何位置找到确切的文件夹,并且只给出$ USER使用的权限.这也非常容易被误用.我更喜欢的另一个解决方案是为单独的用户"chmod"具有SOME EXTRA权限的确切包. (6认同)
  • 在运行之后我得到`命令未找到:npm` (2认同)

asg*_*oth 30

自己试了一下.

您需要重新安装npm.如果您使用git,这是最简单的方法:

git clone http://github.com/isaacs/npm.git
cd npm
sudo make install
Run Code Online (Sandbox Code Playgroud)

否则,还有一个安装脚本:

curl http://npmjs.org/install.sh | sh
Run Code Online (Sandbox Code Playgroud)

(可能你需要使用sudo sh而不是sh).

然后再次安装模块:

sudo npm install jasmine-node -g
Run Code Online (Sandbox Code Playgroud)

编辑23/01/2014:

现在npm自带NodeJ,所以只需重新安装NodeJs.

  • 啊,是的,因为我的unixfoo很弱,我一直在做`sudo curl://npmjs.org/install.sh | sh`出错了.我没有意识到管道需要另一层"sudo"!谢谢 (2认同)

rom*_*ger 10

看看错误

Please try running this command again as root/Administrator.
Run Code Online (Sandbox Code Playgroud)

你需要运行它 sudo

$ sudo npm install jasmine-node -g
Run Code Online (Sandbox Code Playgroud)


Aar*_*ire 6

这对我有用(OSX).我必须在我的用户目录中运行它.

cd ~

curl -L http://npmjs.org/install.sh | sudo sh