47

我目前安装了 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

它返回空?

4

9 回答 9

145

我有同样的问题,并npm cache clear没有解决它。此问题是因为.npm您的主目录中的目录是使用 root 权限创建的。您运行的第一个 npm 命令很可能是sudo npm -g现在您尝试npm install在本地目录中。

要解决:

  • sudo chown -R yourusername ~/.npm
  • 这可能没有必要,但我也不得不rmdir ~/tmp

npm install来自 package.json 应该在此之后工作。

于 2012-12-08T01:31:34.480 回答
6

我遇到了同样的问题,这个问题是因为你的主目录中的 .npm 目录是用 root 权限创建的。

利用 :

$sudo npm install -g express
于 2012-12-17T19:14:36.713 回答
6

运行npm cache clean 并尝试再次安装

于 2012-09-02T15:14:34.257 回答
0

如果您看不出使用 sudo 有什么问题npm install -g package_name。并且在输入密码时遇到问题,您始终可以将自己添加到 sudoers 文件或npm可执行文件所属的同一组中。

因此,要将自己添加到 sudoers 以进行 npm 编辑/etc/sudoers,请在文件底部添加如下内容:

your_username  localhost=/usr/local/bin/npm

如果您需要更多详细信息,这是有关如何实现这一目标的分步指南。

于 2013-11-21T01:14:46.677 回答
0

在我的例子中,不是 root 拥有 ~/.npm 目录,而是 ~/tmp,直到其中一条错误消息最终让我找到它,我才想到要检查它。修复过程很简单,因为它是一个 tmp 目录,我们可以把它吹走,然后从你拥有的一个重新开始。

sudo rmdir ~/tmp
mkdir ~/tmp
于 2014-04-10T02:13:35.570 回答
0

解决方案是:

1 - chown 给您的用户 .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
于 2013-01-28T16:25:31.050 回答
0

以管理员身份运行powershell,然后输入:

Set-ExecutionPolicy RemoteSigned

然后再次尝试安装。

于 2019-09-30T18:58:12.120 回答
0

作为旁注,如果您的其他解决方案没有帮助,我遇到了同样的问题并意识到出了什么问题——这可能在这里感兴趣。

我让 nodemon 在另一个项目上运行——当我在本地安装 express 时。检查您没有在另一个项目上运行 express 并尝试在新项目上安装 express。只是一个抬头,希望它有所帮助。顺便说一句,刚刚从包文件中复制了依赖项,并粘贴到我的新项目中并运行 npm install 并检查,express 安装好了。

于 2020-07-22T10:47:20.193 回答
0

转到 C:\Users\User_Name\AppData\Roaming\npm-cache_logs 并删除所有文件

然后再次运行:

npm install

或者你重新安装 Nodejs 并勾选Chocolatey

您可以安装旧版本的 Nodejs 以与您正在构建的组件版本兼容https://nodejs.org/en/download/releases/

于 2021-04-05T16:24:40.600 回答