我正在尝试创建一个npm包(插件)来通过节点安装小JS框架,并提出了所需的package.json。
在Mac终端上运行npm link命令后,看到以下错误。
npm ERR! Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate'
npm ERR! { [Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Repos/GIT/JavaScript-Boilerplate' }
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" "link"
npm ERR! cwd /Repos/GIT/JavaScript-Boilerplate
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Repos/GIT/JavaScript-Boilerplate
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Repos/GIT/JavaScript-Boilerplate/npm-debug.log
npm ERR! not ok code 0
P.S。我对nodejs很陌生,但对JavaScript有很强的经验,请告诉我你是否需要更多细节。
编辑 - 已解决上述问题,但现在遇到更多问题如下:
6495 verbose false,/Repos/GIT/JavaScript-Boilerplate/node_modules,/Repos/GIT/JavaScript-Boilerplate/node_modules/jquery/node_modules unbuild contextify@0.1.5
6496 info postuninstall contextify@0.1.5
6497 verbose about to build /Repos/GIT/JavaScript-Boilerplate/node_modules/jquery
6498 info /Repos/GIT/JavaScript-Boilerplate/node_modules/jquery unbuild
6499 verbose from cache /Repos/GIT/JavaScript-Boilerplate/node_modules/jquery/package.json
6500 info preuninstall jquery@1.8.3
6501 info uninstall jquery@1.8.3
6502 verbose true,/Repos/GIT/JavaScript-Boilerplate/node_modules,/Repos/GIT/JavaScript-Boilerplate/node_modules unbuild jquery@1.8.3
6503 info postuninstall jquery@1.8.3
6504 error contextify@0.1.5 install: `node-gyp rebuild`
6504 error `sh "-c" "node-gyp rebuild"` failed with 1
6505 error Failed at the contextify@0.1.5 install script.
6505 error This is most likely a problem with the contextify package,
6505 error not with npm itself.
6505 error Tell the author that this fails on your system:
6505 error node-gyp rebuild
6505 error You can get their info via:
6505 error npm owner ls contextify
6505 error There is likely additional logging output above.
6506 error System Darwin 12.3.0
6507 error command "node" "/usr/local/bin/npm" "link"
6508 error cwd /Repos/GIT/JavaScript-Boilerplate
6509 error node -v v0.10.4
6510 error npm -v 1.2.18
6511 error code ELIFECYCLE
6512 verbose exit [ 1, true ]
enter code here
enter code here
看起来我很接近它:)
答案 0 :(得分:8)
在处理 npm目录(npm link
,npm install -g
等)时,需要在安装Node时使用的权限。
您可能使用root权限运行节点安装,这就是全局程序包安装要求您成为root用户的原因。
不要破解权限,以正确的方式安装节点。
在开发计算机上,您不应安装和运行具有root权限的节点,否则npm link
,npm install -g
之类的内容将需要相同的权限。
NVM(节点版本管理器)允许您安装没有root权限的节点,并允许您安装许多版本的Node以便轻松使用它们。非常适合开发。
nvm install stable
现在npm link
,npm install -g
将不再要求您成为root用户。
不要破解权限,以正确的方式全局安装npm包。
如果您使用的是OSX或Linux,则可以为全局包创建用户专用目录并设置npm
和node
以了解如何查找全局安装的包
查看this great article了解有关在没有sudo的情况下全局安装npm模块的分步说明。
另见:npm&#39}关于Fixing npm permissions的文档。
答案 1 :(得分:3)
解决此问题的最简单方法是使用sudo
再次运行相同的命令:
sudo npm link
请不要更改/usr/local
目录的所有者,因为这可能会对已安装的应用程序产生进一步的影响,并且b)可能会危及系统的安全性。使用sudo
是解决此问题的正确方法。
答案 2 :(得分:2)
这可以在linux或我的WSL中通过将全局包目录设置为用户空间而不是root来解决。
首先为全局软件包创建一个目录
label
然后告诉npm在哪里存储全局安装的软件包
mkdir ~/.npm-packages
最后,通过将以下内容添加到.bashrc / .zshrc中,确保npm将找到已安装的二进制文件和手册页:
npm config set prefix ~/.npm-packages