You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL中执行npm install失败,出现EPERM权限不允许错误

WSL中执行npm install失败,出现EPERM权限不允许错误

嘿,我看你在WSL环境下跑npm install时碰到了权限问题,还有一堆依赖弃用的警告,先别慌,咱们先搞定核心的权限报错,再聊聊那些警告的事儿。

核心问题分析

你遇到的EPERM: operation not permitted错误,本质是npm没法删除node_modules里的指定目录。从报错路径\\wsl.localhost\Ubuntu\home\oliver\BISECTHOSTING\website\node_modules\@vue\compiler-core来看,大概率是跨文件系统操作或者目录权限配置异常导致的——比如用Windows的工具操作了WSL的文件,或者项目目录的权限归属不对。

分步解决方案

  • 第一步:清理残留文件与npm缓存
    先在WSL终端里手动删除有问题的node_modules目录,别用Windows资源管理器删,避免留下权限残留:

    rm -rf /home/oliver/BISECTHOSTING/website/node_modules
    

    接着清理npm的缓存,避免缓存文件引发的异常:

    npm cache clean --force
    
  • 第二步:检查并修复目录权限
    首先确保你的项目目录在WSL原生文件系统下(也就是/home/开头的路径,不是挂载的Windows/mnt/c/这类路径)——Windows目录的权限机制和WSL不兼容,很容易出问题。
    检查目录的所有者信息:

    ls -ld /home/oliver/BISECTHOSTING/website
    

    如果显示的所有者不是你的用户名,用下面的命令修改目录及子文件的权限归属:

    sudo chown -R $USER:$USER /home/oliver/BISECTHOSTING/website
    
  • 第三步:重新执行npm install
    一定要在WSL的终端(比如bash、zsh)里执行命令,别用Windows的CMD或PowerShell,避免跨环境的路径和权限冲突:

    cd /home/oliver/BISECTHOSTING/website
    npm install
    

    如果还是报错,可以尝试加上--unsafe-perm参数(仅必要时使用,用来临时绕过权限检查):

    npm install --unsafe-perm
    

关于那些npm弃用警告

这些警告只是告诉你某些依赖已经停止维护了,比如Vue 2已结束生命周期、Popper.js v1被新版替代、部分Babel插件已合并到ECMAScript标准里。它们不会阻止npm完成安装,只是提醒你后续可以考虑升级依赖,提升项目的稳定性和安全性。

附你遇到的完整错误日志

npm WARN deprecated stable@0.1.8: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated.
npm WARN deprecated source-map-url@0.4.1: 该库已被弃用
npm WARN deprecated source-map-resolve@0.6.0: 该库已被弃用
npm WARN deprecated urix@0.1.0: 该库已被弃用
npm WARN deprecated @babel/plugin-proposal-object-rest-spread@7.20.7: 该提案已合并到ECMAScript标准,此插件不再维护,请使用@babel/plugin-transform-object-rest-spread替代
npm WARN deprecated source-map-resolve@0.5.3: 该库已被弃用
npm WARN deprecated resolve-url@0.2.1: 该库已被弃用
npm WARN deprecated popper.js@1.16.1: 新版Popper v2已发布为@popperjs/core,此包仅用于旧版v1
npm WARN deprecated vue@2.7.16: Vue 2已停止支持,不再进行主动维护
npm WARN deprecated vue@2.7.16: Vue 2已停止支持,不再进行主动维护
npm WARN cleanup Failed to remove some directories [
npm WARN cleanup [
npm WARN cleanup '\\wsl.localhost\Ubuntu\home\oliver\BISECTHOSTING\website\node_modules\@vue',
npm WARN cleanup [Error: EPERM: operation not permitted, rmdir '\wsl.localhost\Ubuntu\home\oliver\BISECTHOSTING\website\node_modules@vue\compiler-core'] {
npm WARN cleanup errno: -4048,
npm WARN cleanup code: 'EPERM',
npm WARN cleanup syscall: 'rmdir',
npm WARN cleanup path: '\\wsl.localhost\Ubuntu\home\oliver\BISECTHOSTING\website\node_modules\@vue\compiler-core'
npm WARN cleanup }
npm WARN cleanup ]
npm WARN cleanup ]
npm ERR! code 1
npm ERR! path \wsl.localhost\Ubuntu\home\oliver\BISECTHOSTING\website\node_modules@vuelidate\core\node_modules\vue-demi
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node ./scripts/postinstall.js

备注:内容来源于stack exchange,提问作者Shulz

火山引擎 最新活动