You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04 Node16环境执行npm i报错gyp ERR! not ok无法安装依赖

问题解答

1. 为什么会存在两个版本的node-gyp,报错日志中调用的是v3.8.0版本?

你项目依赖的node-sass@4.14.1版本内部嵌套绑定了node-gyp@3.8.0作为自身的依赖,npm执行依赖安装时会优先调用子包自带的嵌套依赖,而不会使用你全局安装的高版本node-gyp,因此报错日志中显示的调用版本是v3.8.0。

2. 为什么执行npm i后项目目录下没有生成node_modules文件夹?

npm默认的安装机制为全量成功后才会提交最终的安装结果:只要有任意一个依赖安装/编译失败,npm会自动触发回滚操作,删除本次安装过程中已经下载生成的所有临时文件,因此你看不到部分安装的node_modules目录。

3. 如何修复该问题,让npm i可以正常完成依赖安装?

推荐优先选择无编译依赖的方案,彻底避免node-sass相关的编译问题:

  • 方案一(最优解):将package.json中node-sass依赖替换为官方推荐的替代包sass(即dart-sass),版本可选择^1.49.0,和你当前的sass-loader@10.0.3完全兼容,不需要修改业务代码,替换后重新执行npm i即可。
  • 方案二(必须保留node-sass的情况):
    1. 先安装node-gyp 3.8.0依赖的python2环境:执行命令sudo apt install python2,安装完成后配置npm的python路径:npm config set python /usr/bin/python2
    2. 安装基础编译工具链:执行命令sudo apt install build-essential安装gcc、g++、make等编译必需工具
    3. 清理缓存和残留文件:执行命令rm -rf package-lock.json ~/.npm
    4. 重新执行npm i即可

注意:node-sass@4.14.1最高仅支持Node.js 14版本,你当前使用的Node.js 16版本和该版本node-sass本身就存在兼容性问题,就算完成编译环境配置也可能出现其他报错,强烈建议使用方案一替换依赖。


内容的提问来源于stack exchange,提问作者Ahmed M.Osman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:06:03