我目前有node.js版本0.8.8,并且安装了npm 1.1.59。
每当我跑:
$ npm install -g express
我得到了回报:
npm ERR! Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock'
npm ERR! { [Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Users/devinandrews/.npm/64a534c1-express.lock' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 12.1.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "express"
npm ERR! cwd /Users/devinandrews
npm ERR! node -v v0.8.8
npm ERR! npm -v 1.1.59
npm ERR! path /Users/devinandrews/.npm/64a534c1-express.lock
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/devinandrews/npm-debug.log
npm ERR! not ok code 0
我现在正拉着我的头发试图解决这个问题。
更新
我跑了
$ npm -g ls
查看全局安装的npm:
/usr/local/lib
├─┬ express@3.0.0rc4
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.4
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── fresh@0.1.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├── range-parser@0.0.4
│ └─┬ send@0.0.4
│ └── mime@1.2.6
└─┬ npm@1.1.59
├── abbrev@1.0.3
├── ansi@0.1.2
├── archy@0.0.2
├── block-stream@0.0.6
├── chownr@0.0.1
├── couch-login@0.1.10
├── fstream@0.1.18
├─┬ fstream-npm@0.1.1
│ └── fstream-ignore@0.0.5
├── glob@3.1.12
├── graceful-fs@1.1.10
├── inherits@1.0.0
├── ini@1.0.4
├─┬ init-package-json@0.0.5
│ └── promzard@0.2.0
├── lockfile@0.2.1
├── lru-cache@2.0.1
├── minimatch@0.2.6
├── mkdirp@0.3.4
├── node-gyp@0.6.7
├── nopt@2.0.0
├── npm-registry-client@0.2.6
├─┬ npmconf@0.0.11
│ └─┬ config-chain@1.1.1
│ └── proto-list@1.2.2
├── npmlog@0.0.2
├── once@1.1.1
├── osenv@0.0.3
├─┬ read@1.0.4
│ └── mute-stream@0.0.3
├── read-installed@0.0.2
├── read-package-json@0.1.4
├── request@2.9.203
├── retry@0.6.0
├── rimraf@2.0.2
├── semver@1.0.14
├── slide@1.1.3
├── tar@0.1.13
├── uid-number@0.0.3
└── which@1.0.5
但如果我跑:
$ npm ls
它返回空?
答案 0 :(得分:141)
我遇到了同样的问题,npm cache clear
没有修复它。导致此问题的原因是主目录中的.npm
目录是使用root权限创建的。您运行的第一个npm命令很可能是sudo npm -g
,现在您正尝试在本地目录中npm install
。
要解决:
sudo chown -R yourusername ~/.npm
rmdir ~/tmp
npm install
应该在此之后工作。
答案 1 :(得分:6)
运行npm cache clean
并尝试重新安装
答案 2 :(得分:5)
我遇到了同样的问题,导致此问题的原因是您的主目录中的.npm目录是使用root权限创建的。
使用:
$sudo npm install -g express
答案 3 :(得分:0)
解决方案是:
1 - 向用户显示.npm文件夹:
sudo chown -R Webmaste /Users/webmaste/.npm/
2 - 在您的测试文件夹或文件夹中:
sudo npm install -g express@2.5.8
3 - 从您的实际位置调用快递:
/usr/local/share/npm/bin/express
4 -
sudo cd . && npm install
5 - 终于:
node app
控制台中的最终消息应如下所示:
Express server listening on port 3000 in development mode
答案 4 :(得分:0)
如果使用sudo npm install -g package_name
看不出任何问题。并且在输入密码时遇到问题,您可以随时将自己添加到sudoers文件或npm
可执行文件所属的同一组。
所以要为npm编辑/etc/sudoers
添加自己的sudoers添加这样的内容到文件的底部:
your_username localhost=/usr/local/bin/npm
如果您需要更多详细信息,Here是如何实现这一目标的分步指南。
答案 5 :(得分:0)
在我的情况下,而不是〜/ .npm目录由root拥有,它是〜/ tmp,我没想到要检查,直到其中一条错误消息最终导致我找到。修复程序非常简单,因为它是一个tmp目录,我们可以把它吹走,然后再用你拥有的那个重新开始。
sudo rmdir ~/tmp
mkdir ~/tmp
答案 6 :(得分:0)
以管理员身份运行powershell,然后键入:
Set-ExecutionPolicy RemoteSigned
然后尝试重新安装。
答案 7 :(得分:0)
作为一个旁注,如果您对其他解决方案没有帮助,我也遇到了同样的问题,并意识到出了什么问题–也许对此很有兴趣。
当我在本地安装Express时,nodemon正在另一个项目上运行。检查您没有在另一个项目上运行Express,并尝试在新项目上安装Express。请注意,希望对您有所帮助。顺便说一句,只需从软件包文件中复制依赖项,然后粘贴到我的新项目中,然后运行npm install并检查,便安装了Express。
答案 8 :(得分:0)
转到 C:\Users\User_Name\AppData\Roaming\npm-cache_logs 并删除所有文件
然后再次运行:
npm install
或者你重新安装 Nodejs 并勾选 Chocolatey
您可以安装旧版本的 Nodejs 以与您正在构建的组件版本兼容 https://nodejs.org/en/download/releases/