【问题标题】:NPM always ask me for root in a Express projectNPM 总是在 Express 项目中询问我的 root 权限
【发布时间】:2013-04-03 17:39:55
【问题描述】:

由于我使用 Express.js,我不能再正常使用npm install。我总是必须扎根才能让它工作......

假设我生成了一个项目

express --sessions --css css

当我尝试执行npm install 之后,我遇到了这些错误

npm WARN package.json application-name@0.0.1 No README.md file found!
npm ERR! Error: EACCES, open '/Users/Arnaud/.npm/e7d16cae-express-3-1-1.lock'
npm ERR!  { [Error: EACCES, open '/Users/Arnaud/.npm/e7d16cae-express-3-1-1.lock']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/Arnaud/.npm/e7d16cae-express-3-1-1.lock' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/Arnaud/Sites/test
npm ERR! node -v v0.10.2
npm ERR! npm -v 1.2.15
npm ERR! path /Users/Arnaud/.npm/e7d16cae-express-3-1-1.lock
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/Arnaud/.npm/e7d16cae-express-3-1-1.lock'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/Arnaud/Sites/test/npm-debug.log
npm ERR! not ok code 0

但是如果做一个sudo npm install,一切都很好......知道为什么吗?

【问题讨论】:

  • 文件/Users/Arnaud/.npm/e7d16cae-express-3-1-1.lock 可能属于root(可能是曾经以root 身份运行npm 的遗留物)。我认为您可以将其删除并重试。否则,请检查/Users/Arnaud/.npm/ 的权限以确保它对您是可写的。

标签: node.js express root


【解决方案1】:

如果您使用的是 MAC OS 或 Unix/Lunix 机器,您只需要注意,为了安全措施,即使您是 root 所有者,您也需要在命令上使用 sudo 命令线在终端。因此,大多数时候使用 chown 命令更改文件和目录的所有权是不够的。

原因是你将执行的命令会对系统文件有很大的改变,你需要输入你的root admin的密码,就像在Windows中当他们要求你输入管理员密码进行系统更改一样,所以它看起来像这样:

*Ms-MacBook-Pro:~ AMB$ sudo npm install -g express-generator

密码:(输入您的根/管理员密码)

/usr/local/bin/express -> /usr/local/lib/node_modules/express-generator/bin/express-cli.js
/usr/local/lib
└─┬ express-generator@4.15.0 
  ├─┬ commander@2.9.0 
  │ └── graceful-readlink@1.0.1 
  ├── ejs@2.5.6 
  ├─┬ mkdirp@0.5.1 
  │ └── minimist@0.0.8 
  └── sorted-object@2.0.1 

Ms-MacBook-Pro:~ AMB$*

【讨论】:

    【解决方案2】:

    这可能是权限问题。要收回/Users/Arnaud/.npm 目录的所有权,请在终端中执行以下命令

    chown -R Arnaud /Users/Arnaud/.npm
    

    如果您使用的是 OSX,您还可以使用磁盘工具来修复整个磁盘的权限,这也可能会为您解决问题。

    【讨论】:

    • 是的,确实如此。奇怪的是我确实尝试使用磁盘工具修复权限,但它没有解决任何问题......无论如何,它现在可以工作了。谢谢:)
    • 我必须做 sudo chown -R username /Users/username/.npm
    • 有人知道 ubuntu 上的这个命令吗?每当我尝试npm install -g anyThing 时,我都必须在前面加上sudo 重新运行它
    • @ConnorLeech 在 unix 上应该类似。 chown -R `whoami` ~/.npm 用于主目录(npm install),chown -R `whoami` /usr/local/lib/node_modules/ 用于全局目录(npm install -g)
    • 我在 lib 中没有 node_modules
    猜你喜欢
    • 2011-10-30
    • 1970-01-01
    • 2016-09-12
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多