ng2-google-charts加载器版本错误:IE刷新时提示Bad version:45.2
解决IE下ng2-google-chart刷新时"Bad version: 45.2"错误的方案
我之前遇到过类似的IE兼容问题,结合你的环境和报错信息,给你几个可行的解决方向:
1. 强制指定Google Charts的版本号
这个错误的核心原因是chart.service.loader错误地将IE的浏览器版本(45.2应该是userAgent里的某个字段)当成了Google Charts的版本号,请求了不存在的图表版本。解决这个问题最直接的方式就是手动指定稳定的图表版本,不让loader自动检测:
在你的根模块(比如AppModule)中导入GoogleChartsModule时,通过forRoot配置强制设置版本:
import { GoogleChartsModule } from 'ng2-google-charts'; @NgModule({ imports: [ // 配置为官方稳定版,也可以指定具体版本号如'49' GoogleChartsModule.forRoot({ version: 'current', language: 'zh-CN' // 根据你的需求设置语言 }) ] }) export class AppModule { }
如果是组件级别的使用,也可以在组件内注入ChartLoaderService手动设置版本:
import { ChartLoaderService } from 'ng2-google-charts'; constructor(private chartLoader: ChartLoaderService) {} ngOnInit() { // 覆盖自动检测的版本 this.chartLoader.chartVersion = 'current'; }
2. 完善Angular的IE兼容Polyfill
Angular 6对IE的支持需要启用必要的polyfill,确保你已经在polyfills.ts中配置了以下内容(取消对应注释):
// IE11需要的core-js polyfill import 'core-js/es6/reflect'; import 'core-js/es7/reflect'; // Zone.js相关polyfill import 'zone.js/dist/zone'; // 如果用到RxJS,需要这个patch import 'zone.js/dist/zone-patch-rxjs'; // 图表渲染可能需要的canvas patch import 'zone.js/dist/zone-patch-canvas';
另外,如果你的项目中还用到了其他ES6+特性,可能需要添加额外的polyfill,比如classlist.js(针对IE11的classList支持)。
3. 清理缓存避免旧版本残留
有时候缓存会导致错误的版本信息残留,尝试以下操作:
- 清除IE浏览器的缓存(快捷键
Ctrl+Shift+Delete,勾选所有缓存相关选项后删除) - 清理Angular的构建缓存:运行
ng clean命令,之后重新执行ng build(生产环境建议加--prod参数)
4. 检查ng2-google-chart的适配问题
虽然你已经降级到3.3版本,但可以确认该版本是否明确支持Angular 6和IE11。如果还是有问题,可以尝试锁定Google Charts的具体版本号(比如'48',这个版本是经过验证的稳定版,对IE兼容较好),而不是用'current'。
内容的提问来源于stack exchange,提问作者Jamil89
相关产品推荐
相关产品推荐

