Mac系统下NVM报错无法使用NPM命令的问题求助
问题描述
用NVM近一年未出现问题,体验优于直接使用Node。但新建仓库后所有NPM命令失效,具体异常如下:
- 执行
npm -v或npm install时抛出权限错误:
node:internal/bootstrap/switches/does_own_process_state:126 cachedCwd = rawMethods.cwd(); ^ Error: EPERM: operation not permitted, uv_cwd at process.wrappedCwd [as cwd] (node:internal/bootstrap/switches/does_own_process_state:126:28) at Object.<anonymous> (/Users/****/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/depd/index.js:25:24) at Module._compile (node:internal/modules/cjs/loader:1103:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Module.require (node:internal/modules/cjs/loader:1005:19) at require (node:internal/modules/cjs/helpers:102:18) at Object.<anonymous> (/Users/****/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/agentkeepalive/lib/agent.js:6:19) at Module._compile (node:internal/modules/cjs/loader:1103:14) { errno: -1, code: 'EPERM', syscall: 'uv_cwd' }
- 项目通过
.nvmrc指定v16.14.0,执行nvm use时无法显示NPM版本:
Found 'project-path/.nvmrc' with version <v16.14.0> Now using node v16.14.0 (npm v)
- 尝试升级NVM到0.39.2失败,执行
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash报错:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Operation not permitted % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 15916 100 15916 0 0 43223 0 --:--:-- --:--:-- --:--:-- 44334 => nvm is already installed in /Users/****/.nvm, trying to update using git => fatal: Unable to read current working directory: Operation not permitted Failed to update nvm with v0.39.2, run 'git fetch' in /Users/****/.nvm yourself.
手动在/Users/****/.nvm目录执行git fetch无报错,但所有问题依旧,当前NVM版本为0.38.0。
解决方案
核心问题是当前工作目录权限异常,导致Node/NVM无法读取路径信息,按以下步骤修复:
1. 修复项目目录权限
- 先退出当前项目目录,回到用户主目录:
cd ~ - 检查项目目录的权限(替换
project-path为实际路径):ls -ld project-path - 若目录所属用户或权限异常,执行修复命令:
sudo chown -R $(whoami):staff project-path sudo chmod -R 755 project-path
2. 重新加载NVM并切换版本
- 卸载当前激活的Node版本:
nvm deactivate - 重新加载NVM配置:
source ~/.nvm/nvm.sh - 再次切换到项目指定版本:
此时应正常显示NPM版本,测试nvm usenpm -v验证恢复情况。
3. 修复或重装对应Node版本
若上述步骤无效,说明该Node版本的NPM损坏:
- 重装v16.14.0版本(自动修复NPM):
nvm install 16.14.0 --reinstall-packages-from=16.14.0 - 验证NPM:
npm -v
4. 手动升级NVM
权限修复后,手动完成NVM升级:
- 进入NVM目录:
cd ~/.nvm - 拉取最新代码并切换到0.39.2版本:
git fetch origin git checkout v0.39.2 - 重新加载NVM:
source ~/.nvm/nvm.sh - 验证版本:
nvm --version
内容的提问来源于stack exchange,提问作者jared-leddy
相关产品推荐
相关产品推荐

