WSL环境下vue-cli项目执行npm run serve报错如何解决?
问题原因
- 核心根因:项目存放在WSL挂载的Windows磁盘(/mnt/c/开头路径),跨文件系统访问存在权限不兼容、性能差、文件锁冲突问题,文件监听工具chokidar遍历目录时会触发Windows系统占用文件(如
DumpStack.log.tmp)、系统隐藏链接目录(如Documents and Settings)的读取报错。 - 初始依赖缺失报错:要么是依赖未完整安装,要么是混用了WSL和Windows两种环境生成的
node_modules,不同系统架构下的node编译产物不兼容,导致依赖识别失败。 - node-sass编译报错:node-sass已经停止维护,对Node.js 16+版本兼容性极差,且在WSL挂载盘内编译原生模块时,会因为路径权限、文件系统兼容问题直接编译失败,同时你使用的Node版本和项目要求的node-sass版本也存在不匹配问题。
解决方案
WSL环境运行(推荐方案)
- 把整个项目从Windows挂载盘移动到WSL原生Linux文件系统路径下,比如
/home/你的用户名/projects/目录,不要放在/mnt/c/开头的路径中,可解决绝大多数跨文件系统导致的报错。 - 删除项目内旧的依赖文件和锁定文件:
rm -rf node_modules package-lock.json yarn.lock
- 替换已废弃的node-sass为官方推荐的纯JS实现版本sass,无需编译原生模块,兼容性更强:
npm uninstall node-sass npm install -D sass
- 全量安装项目依赖:
npm install
- 启动项目验证:
npm run serve
Windows原生环境运行
- 将项目移出C盘根目录,存放在非系统根目录的普通文件夹内,比如
D:\projects\路径下,避免chokidar遍历系统占用文件触发锁报错。 - 同样删除旧的
node_modules、package-lock.json、yarn.lock文件。 - 执行上述替换node-sass为sass的操作,命令和WSL环境一致。
- 全量安装依赖后启动项目即可。
内容的提问来源于stack exchange,提问作者Takamura
相关产品推荐
相关产品推荐

