Angular从7升级到12后启动报错process is not defined如何解决?
解决方案
1 处理node-sass废弃警告
执行以下两条命令替换sass编译工具即可消除警告:
- 卸载废弃的node-sass:
npm uninstall node-sass - 安装官方推荐的sass包:
npm install sass --save-dev
2 处理ReferenceError: process is not defined报错
该问题的根因是Angular 12默认使用Webpack 5,Webpack 5不再默认注入Node.js核心模块的polyfill,也不会全局暴露process对象,导致依赖process的代码运行报错,可按以下步骤修复:
方案1:手动注入process polyfill(兼容第三方依赖调用process的场景)
- 安装process polyfill包:
npm install process --save-dev - 打开项目根目录下的
src/polyfills.ts文件,在文件最顶部添加以下代码:
import * as process from 'process'; window.process = process;
- 若执行上述操作后仍有报错,打开
angular.json配置文件,在projects -> 你的项目名称 -> architect -> build -> options节点下添加配置:
"allowedCommonJsDependencies": ["process", "util"]
- 清理缓存重启项目:
npm start -- --reset-cache
方案2:替换业务代码中的process调用(推荐)
如果是业务代码中直接调用了process.env相关逻辑,建议直接替换为Angular原生的环境变量方案,读取src/environments目录下的环境变量配置文件内容,无需额外引入polyfill,更符合Angular开发规范。
内容的提问来源于stack exchange,提问作者cpiock
相关产品推荐
相关产品推荐

