目前我总是跑,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.
Run Code Online (Sandbox Code Playgroud)
如您所见,下载已成功启动,但随后失败了..
我想知道在npm上禁止sudo的最佳方法是什么?
lio*_*llo 15
npm install -g
没有节点模块是可能的(也是可取的)sudo
.
检查/usr/local/share/npm/bin
文件夹的权限.我已经通过brew(没有sudo
)安装了node和npm,并且该特定文件夹最终归root所有.
这固定了一次又一次:
$ sudo chown $(whoami) /usr/local/share/npm/bin
Run Code Online (Sandbox Code Playgroud)
(至于禁用sudo
npm:你必须为此调整npm.你自己的节点代码可以使用https://npmjs.org/package/sudo-block,npm install sudo-block
)
编辑:即使这有效,我不再使用-g
.而是使用前缀(参见下一个答案),或者更好地使用NIX https://unix.stackexchange.com/a/381797(即使在OSX上)
feb*_*Ley 14
在我看来是指定npm前缀最干净的方法:
npm config set prefix ~/.node_modules
Run Code Online (Sandbox Code Playgroud)
然后将以下内容添加到.bash_profile中
export PATH=$HOME/.node_modules/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
现在这些软件包将安装到您的用户目录中,并且不会对任何权限进行修改.
编辑:如果您无法安装yeoman,请在名为yodoctor的一个PATH目录中创建一个bash文件,其中包含以下内容
#!/bin/bash
yo doctor
Run Code Online (Sandbox Code Playgroud)
使文件可执行
chmod +x yodoctor
Run Code Online (Sandbox Code Playgroud)
现在你应该可以安装自耕农了.
归档时间: |
|
查看次数: |
11344 次 |
最近记录: |