升级Angular至15版本遇Uncaught ReferenceError: global未定义问题求助
解决Angular 15中"global is not defined"错误
针对你升级Angular 15后遇到的这个错误,有几个可行的解决办法:
修改入口文件main.ts
直接在main.ts的最顶部(所有import语句之前)添加以下代码:(window as any).global = window;作为应用的入口文件,main.ts里的代码会在应用初始化前执行,能提前给浏览器环境注入
global对象,覆盖依赖库的全局变量需求。配置自定义polyfills文件
如果你习惯用polyfills.ts的方式,需要手动让Angular识别这个文件:- 在项目根目录的
src文件夹下创建polyfills.ts,并添加代码:(window as any).global = window; - 打开
angular.json,找到projects下对应项目的build->options,修改polyfills字段的值为src/polyfills.ts,保存后重新构建项目即可。
- 在项目根目录的
自定义Webpack配置(可选)
如果你的项目配置了自定义Webpack,可以通过ProvidePlugin自动映射全局变量:
在Webpack配置文件中添加:const webpack = require('webpack'); module.exports = { // ...其他配置 plugins: [ new webpack.ProvidePlugin({ global: 'window' }) ] };
之前你自行创建polyfills.ts却没生效,是因为Angular 15默认不再自动加载这个文件,必须在angular.json中明确配置polyfills路径才会被构建流程识别。
内容的提问来源于stack exchange,提问作者iTaylor5
相关产品推荐
相关产品推荐

