目前我总是运行sudo npm install <package-name>
,但据我所知,这是不正确的。
我希望有机会不以root用户身份使用它。
我遵循了一些建议并使用了这个命令sudo chown -R <username> ~/.npm
但它不起作用......
例如,它是我的npm install jade
...
npm http 200 https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm http 200 https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm ERR! Error: EACCES, symlink '../jade/bin/jade'
npm ERR! { [Error: EACCES, symlink '../jade/bin/jade'] errno: 3, code: 'EACCES', path: '../jade/bin/jade' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
如您所见,下载已成功启动但随后失败..
我想知道在npm上禁止sudo的最佳方法是什么?
答案 0 :(得分:15)
没有npm install -g
的{{1}}节点模块是可能的(也是可取的)。
检查sudo
文件夹的权限。我已经通过brew安装了node和npm(没有/usr/local/share/npm/bin
),并且该特定文件夹最终归root所有。
这一劳永逸地修复了它:
sudo
(至于使用npm禁止$ sudo chown $(whoami) /usr/local/share/npm/bin
:你必须为此调整npm。你自己的节点代码可以使用https://npmjs.org/package/sudo-block,sudo
)
编辑即使这样有效,我也不再使用npm install sudo-block
。而是使用前缀(参见下一个答案),或者更好地使用NIX https://unix.stackexchange.com/a/381797(甚至在OSX上)
答案 1 :(得分:14)
在我看来,这是指定npm前缀的最简洁方法:
npm config set prefix ~/.node_modules
然后将以下内容添加到.bash_profile
export PATH=$HOME/.node_modules/bin:$PATH
现在,软件包将安装到您的用户目录中,并且不会授予任何权限。
编辑:如果您无法安装 yeoman ,请在名为 yodoctor 的一个PATH目录中创建一个bash文件,其中包含以下内容
#!/bin/bash
yo doctor
使用
使文件可执行chmod +x yodoctor
现在你应该能够安装自己。
答案 2 :(得分:2)
你也可以这样做:
sudo chown -R $USER /usr/local
并递归地将文件更改为当前用户。
答案 3 :(得分:1)
我发现这是一个更好的解决方案
sudo chown -R $USER /Users/$USER
这只会将用户的所有者更改为您,而npm应安装在OS X上的用户下。 我一直在阅读的所有内容都说sud for npm installs很糟糕,当你打开自己的恶意脚本时,我不得不同意它们。
答案 4 :(得分:0)
这里提供的两个解决方案不是我推荐的,因为它们是强力解决方案。相反,我建议阅读One does not simply sudo npm