WSL v1环境下启动DataTurks React前端应用时npm安装grpc遇权限错误求助
解决WSL v1下npm安装grpc时的EACCES权限错误
我之前在WSL v1环境里折腾React项目时,碰到过和你几乎一模一样的grpc安装权限问题——sudo不管用、全局装也无效,试了几个办法终于解决了,分享给你:
可能的解决方案:
1. 修复npm全局目录权限并清理缓存
有时候npm的全局目录权限配置不对,会间接影响本地包的安装:
- 先查看npm全局前缀目录:
npm config get prefix - 修改该目录的权限,让当前用户拥有所有权:
sudo chown -R $USER:$USER $(npm config get prefix)/{lib/node_modules,bin,share} - 强制清理npm缓存:
npm cache clean --force - 删除项目目录下的
node_modules和package-lock.json:rm -rf node_modules package-lock.json - 重新执行
npm install
2. 将项目移至WSL原生文件系统
WSL v1对Windows NTFS文件系统的权限支持有天生缺陷,跨系统目录下的文件重命名、权限操作经常出问题:
- 把你的
DataTurks/bazaar项目从当前位置移到WSL的原生目录(比如/home/kmartin62/下),不要放在/mnt/c/这类挂载的Windows盘符里 - 迁移完成后,重新执行
npm install,这个办法对我来说是最有效的
3. 指定兼容的grpc版本
部分grpc新版本和WSL v1的环境不兼容,可以尝试锁定一个稳定版本:
- 在项目的
package.json里手动添加或修改grpc的版本,比如:"dependencies": { "grpc": "^1.24.11" } - 同样删除
node_modules和package-lock.json后,重新执行npm install
4. 使用--unsafe-perm参数执行安装
这个参数会让npm以root权限执行包的安装脚本,绕过部分权限限制:
sudo npm install --unsafe-perm
为什么sudo没用?
WSL v1的权限模型和Windows文件系统的权限是交叉作用的,即使你用sudo,NTFS目录下的某些文件操作(比如重命名)还是会被Windows的权限机制限制,所以移到WSL原生目录是从根源解决问题的办法。
内容的提问来源于stack exchange,提问作者Anthino Russo
相关产品推荐
相关产品推荐

