node.js - 为什么我必须以管理员身份调用 npm link?

标签 node.js npm gulp

我通过全局安装了一些nodejs包

sudo npm install gulp -g

现在我(或同一台机器上的其他开发人员)想在项目中使用它

me@host:/my/project$ npm link gulp

它失败了

unbuild gulp@3.8.11
npm ERR! Error: EPERM, chmod '/my/projectnode_modules/gulp/bin/gulp.js'
npm ERR!  { [Error: EPERM, chmod '/my/projectnode_modules/gulp/bin/gulp.js']
npm ERR!   errno: 50,
npm ERR!   code: 'EPERM',
npm ERR!   path: '/my/projectnode_modules/gulp/bin/gulp.js' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 3.2.0-4-amd64
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "link" "gulp"
npm ERR! cwd /raid5/workspaces/jgr/aktivglueck-laravel
npm ERR! node -v v0.10.29
npm ERR! npm -v 1.4.21
npm ERR! path /my/projectnode_modules/gulp/bin/gulp.js
npm ERR! code EPERM
npm ERR! errno 50
npm ERR! stack Error: EPERM, chmod '/my/projectnode_modules/gulp/bin/gulp.js'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /my/projectnpm-debug.log
npm ERR! not ok code 0

sudo npm link gulp

一切正常。

我想知道的是:为什么 npm link 需要管理员权限? 据我了解,我正在我的项目文件夹中创建一个链接,我拥有完全权限 -那么它在全局系统上做了什么?

最佳答案

我相信 npm link 会在全局安装的 Node 包所在的位置创建一个指向当前目录的符号链接(symbolic link)。参见 here .

如果您对该路径没有写权限(您可以使用 npm config get prefix 检查),您将看到您在那里看到的错误。

为避免必须 sudo 全局安装/链接,您可以更改该目录的所有权/权限。

关于node.js - 为什么我必须以管理员身份调用 npm link?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30529525/

相关文章:

javascript - 在 Gulp 中使用变量作为目标文件名?

node.js - 停止监听特定端口的 Node 服务器

javascript - 使用 express 发送后出现错误无法设置 header ?

javascript - “router-outlet”不是 Angular 2 的已知元素

reactjs - 原型(prototype)污染——npm漏洞无法修复?

node.js - 如何将 node_modules 与实际的 package.json 同步?

angularjs - 在 Heroku 上使用 Gulp 部署 Angular 应用程序 : app crashed

Node.js 和加密库

node.js - 在 mongodb 中读取然后更新的最佳方法是什么?

javascript - 将 PostCSS 更新到版本 8 React 后应用程序不运行