Udemy Angular项目执行npm install时node-sass编译报错问题
问题根因
安装失败是三个问题叠加导致的,和课程有没有指引无关:
- Node版本不兼容:当前使用的Node 17.4.0属于过新的非LTS版本,项目依赖的
karma@1.7.1、karma-cli@1.0.1、node-gyp@3.8.0等老旧包最高仅适配到Node 14及以下版本,高版本Node的API变更会直接导致依赖运行、编译异常。 - 废弃依赖警告为老旧Angular项目的常态:
har-validator、request、core-js@2.x、@angular/http、chokidar@2这类包早已停止维护,但属于旧版Angular生态的默认依赖,仅为警告项,不会直接中断安装流程。 - 编译环节报错核心是老版
node-sass的编译依赖缺失:绑定node-gyp@3.8.0的旧版node-sass默认走本地编译流程,强制依赖Python 2环境,而Windows 10默认无内置Python 2,且Python 2早已停止维护,无需手动安装。
可直接落地的修复步骤
按顺序操作即可,不需要额外降级到Node 8等早已停服的版本:
- 切换适配的Node LTS版本
先安装nvm-windows做Node版本管理,安装完成后执行以下命令切换到兼容版本:
执行nvm install 14.21.3 nvm use 14.21.3node -v确认输出为v14.21.3即可,该版本为Node 14最终维护版,可同时兼容Angular CLI 13、老旧项目依赖、node-sass等包,不会触发版本兼容报错。 - 跳过node-sass本地编译(无需安装Python2/VS编译环境)
执行以下命令配置node-sass的国内二进制镜像源,安装时会直接拉取对应系统预编译好的二进制文件,完全跳过node-gyp本地编译环节:npm config set sass_binary_site https://npmmirror.com/mirrors/node-sass/ - 清理残留缓存后重装
删除项目目录下之前安装失败生成的node_modules文件夹、package-lock.json文件,执行以下命令清理npm缓存:
清理完成后重新在项目目录执行npm cache clean --forcenpm install即可完成安装。
后续运行注意事项
- 如果执行
ng serve时提示Angular CLI版本不匹配,直接在项目目录执行npm install @angular/cli@13.3.6 --save-dev,对齐项目本地CLI版本和全局版本即可,无需调整全局Angular CLI版本。 - 安装过程中输出的废弃依赖警告只要不中断安装流程,无需额外处理,不影响项目正常启动和功能运行。
- 不要单独手动安装Python 2,该版本已停止官方维护,会给系统带来不必要的安全风险。
内容的提问来源于stack exchange,提问作者Reinhard Schmidlin
相关产品推荐
相关产品推荐

