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

Angular 5应用在Firefox v48.0.1及更低版本无法运行求助

我来帮你解决这个Angular在旧浏览器里的兼容问题!你遇到的TypeError: this is undefined本质是UglifyJS插件版本冲突,加上旧浏览器缺少必要的Polyfill导致的,下面是一步步的解决方案:

第一步:强制统一uglifyjs-webpack-plugin版本

你之前直接安装1.1.5没用,是因为@angular/cli和webpack自身依赖了不同版本的插件,npm会优先满足这些上层依赖的版本要求,导致你的指定版本没生效。我们可以用resolutions字段强制所有嵌套依赖都用1.1.5版本:

  1. 打开你的package.json,添加以下配置:
"resolutions": {
  "uglifyjs-webpack-plugin": "1.1.5"
},
"scripts": {
  "preinstall": "npx npm-force-resolutions"
}
  • resolutions字段用来指定所有子依赖的强制版本
  • preinstall脚本会在npm install前自动运行npm-force-resolutions,确保resolutions生效(npm本身不原生支持resolutions,需要这个工具)
  1. 清理现有依赖并重新安装:
rm -rf node_modules package-lock.json
npm install
  1. 验证:打开package-lock.json,搜索所有uglifyjs-webpack-plugin条目,确认版本都是1.1.5

第二步:补全旧浏览器所需的Polyfill

IE10和Firefox 48这类旧浏览器缺少很多ES6+的API,Angular默认的Polyfill可能不够,你需要在src/polyfills.ts里添加以下内容:

// 基础ES6+ Polyfill
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

// ES7+特性支持
import 'core-js/es7/array';

// IE10+专属Polyfill
import 'classlist.js'; // 支持classList API
import 'web-animations-js'; // 如果你的应用用了Angular动画

// Zone.js(Angular必备)
import 'zone.js/dist/zone';

第三步:确认TS编译目标为ES5

打开tsconfig.json,确保compilerOptions里的target设置为es5:

"compilerOptions": {
  "target": "es5",
  // 其他配置...
}

第四步:重新构建并测试

执行构建命令:

ng build --prod

然后把构建产物部署到测试环境,在IE10和Firefox 48里验证是否正常运行。

这样应该就能解决你遇到的this is undefined错误了,本质是Uglify版本冲突导致的代码压缩问题,加上旧浏览器缺少必要的API支持。

内容的提问来源于stack exchange,提问作者Aakash Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:41:49