Nodejs 使用sudo仍然显示Error: EACCES
Nodejs 使用sudo仍然显示Error: EACCES
用yoeman 生成webapp 然后出现了权限错误
sudo yo webapp … npm ERR! Error: EACCES, mkdir '/Users/apple/.npm/each-async/0.1.3’ npm ERR! { [Error: EACCES, mkdir ‘/Users/apple/.npm/each-async/0.1.3’] npm ERR! errno: 3, npm ERR! code: ‘EACCES’, npm ERR! path: ‘/Users/apple/.npm/each-async/0.1.3’, npm ERR! parent: ‘grunt-svgmin’ } npm ERR! npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 14.0.0 npm ERR! command “/usr/local/bin/node” “/usr/local/bin/npm” "install" npm ERR! cwd /Users/apple/test/webtest/test npm ERR! node -v v0.10.33 npm ERR! npm -v 1.4.28 npm ERR! path /Users/apple/.npm/each-async/0.1.3 npm ERR! code EACCES npm ERR! errno 3 npm ERR! stack Error: EACCES, mkdir '/Users/apple/.npm/each-async/0.1.3’ npm ERR! not ok code 0
Nodejs 使用sudo仍然显示Error: EACCES
当你尝试使用 sudo 运行 yo webapp 命令时,遇到了权限错误(Error: EACCES),这通常是因为某些文件或目录的权限设置不正确。尽管你使用了 sudo,但某些操作可能仍然会遇到权限问题。
问题描述
你使用 sudo 运行 yo webapp 命令时,遇到了以下错误:
npm ERR! Error: EACCES, mkdir '/Users/apple/.npm/each-async/0.1.3'
npm ERR! { [Error: EACCES, mkdir '/Users/apple/.npm/each-async/0.1.3']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Users/apple/.npm/each-async/0.1.3',
npm ERR! parent: 'grunt-svgmin' }
解决方法
1. 修改 .npm 目录的权限
你可以通过修改 .npm 目录的权限来解决这个问题。首先,找到 .npm 目录的位置:
ls -ld ~/.npm
如果权限设置不正确,可以使用 chmod 命令修改权限:
sudo chmod -R 755 ~/.npm
2. 更改 .npm 目录的所有者
另一种方法是更改 .npm 目录的所有者为你当前的用户:
sudo chown -R $USER ~/.npm
3. 使用 --unsafe-perm 参数
如果你在使用 npm install 时遇到类似的问题,可以添加 --unsafe-perm 参数来避免权限问题:
sudo npm install --unsafe-perm
4. 创建一个全局 NPM 配置文件
创建一个全局的 NPM 配置文件,并将全局安装路径设置为你的用户目录:
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
然后更新你的 shell 配置文件(如 .bashrc 或 .zshrc)以包含新的路径:
export PATH=~/.npm-global/bin:$PATH
最后,重新加载配置文件:
source ~/.bashrc # 或 source ~/.zshrc
现在,你可以使用 npm install -g <package> 来全局安装包,而不会遇到权限问题。
示例代码
假设你已经设置了全局 NPM 配置文件,可以这样全局安装 yo 和 generator-webapp:
npm install -g yo generator-webapp
然后运行 yo webapp:
yo webapp
通过这些步骤,你应该能够解决 Error: EACCES 的问题,并成功运行 yo webapp。
手动把~/.npm下的文件权限变成777吧.
本人不是Mac环境, 不知道Mac下的Node环境问题.
mkdir 出现错误, 会不会是依赖太深造成的 , 好郁闷啊
这个问题通常发生在尝试创建或修改某个文件或目录时,由于权限不足导致。尽管使用了 sudo,但有时某些目录可能仍然受到系统默认的安全策略限制。
在Node.js环境中,特别是涉及到全局安装npm包或者某些用户特定的缓存目录(如.npm)时,可能会遇到这种问题。解决方案可以分为几个方面:
解决方案
1. 更改文件或目录的权限
你可以手动更改你的 .npm 目录的权限,使其允许当前用户写入:
sudo chown -R $(whoami) ~/.npm
这会将 .npm 目录的所有权改为当前用户。
2. 使用局部安装
如果可能的话,考虑使用局部安装而不是全局安装依赖项。局部安装可以避免很多权限问题。
npm install <package-name> --save
3. 更改npm缓存目录
可以更改npm的缓存目录到一个当前用户有权限写入的地方:
mkdir ~/npm-cache
npm config set cache ~/npm-cache --global
4. 使用 nvm 管理 Node.js 版本
使用nvm(Node Version Manager)来管理不同的Node.js版本,可以帮助避免全局包带来的权限冲突问题。
以上方法应该能够解决大部分的权限问题。如果问题仍然存在,请检查是否有其他安全软件或系统策略在限制操作。


