.NET 4.8集成Highcharts离线导出脚本遇兼容及WebGrease问题求助
问题分析与解决方案
一、离线导出脚本版本不兼容问题(TypeError: Cannot destructure property 'isSafari' of 't' as it is undefined)
出现该错误的核心原因是offline-exporting.js版本与Highcharts主版本不匹配,Highcharts的离线导出脚本与主库强绑定,跨版本混用会导致内部API调用失败。
解决步骤:
- 下载与Highcharts 8.0.0完全对应版本的offline-exporting.js,禁止使用v11.4.8版本的脚本(可从Highcharts官方归档资源中获取对应版本的配套脚本)。
- 调整脚本加载顺序:在
BundleConfig.cs中,确保Highcharts主脚本先于offline-exporting.js加载,示例配置:bundles.Add(new ScriptBundle("~/bundles/highcharts").Include( "~/Scripts/Highcharts-8.0.0/highcharts.js", "~/Scripts/Highcharts-8.0.0/offline-exporting.js" )); - 启用离线导出配置:在页面初始化Highcharts时,开启离线导出选项:
Highcharts.chart('container', { // 图表核心配置 exporting: { offlineExporting: true, // 启用离线导出 enabled: true } }); - 额外注意:Highcharts 8.0.0的离线导出依赖
canvg和html2canvas的对应版本,需一并引入(版本需与Highcharts 8.0.0兼容,避免使用最新版依赖),加载顺序为:highcharts.js→canvg.js→html2canvas.js→offline-exporting.js。
二、升级Highcharts至v11.4.8时WebGrease空引用异常
该问题源于旧版本WebGrease(.NET 4.8默认配套版本)对ES6+语法的JavaScript脚本兼容性差,新版本Highcharts使用了更现代的JS语法,导致WebGrease在压缩脚本时触发空引用错误。
解决方法:
方案1:升级WebGrease包
通过NuGet包管理器将WebGrease升级至兼容.NET 4.8的最新版本(推荐1.6.0及以上),更新后重新生成项目,验证压缩是否正常。
方案2:使用预压缩脚本,跳过WebGrease压缩
- 从Highcharts官网下载v11.4.8版本的预压缩脚本(
highcharts.min.js、offline-exporting.min.js)。 - 修改
BundleConfig.cs,直接引用预压缩文件,并关闭捆绑压缩优化:bundles.Add(new ScriptBundle("~/bundles/highcharts").Include( "~/Scripts/Highcharts-11.4.8/highcharts.min.js", "~/Scripts/Highcharts-11.4.8/offline-exporting.min.js" )); // 在Global.asax或BundleConfig.cs中关闭优化(仅在使用预压缩脚本时) BundleTable.EnableOptimizations = false;
方案3:替换WebGrease为BundlerMinifier
- 通过NuGet安装
BundlerMinifier包,它对现代JS语法支持更好。 - 在项目根目录创建
bundleconfig.json,配置脚本捆绑规则,示例:[ { "outputFileName": "~/bundles/highcharts.min.js", "inputFiles": [ "~/Scripts/Highcharts-11.4.8/highcharts.js", "~/Scripts/Highcharts-11.4.8/offline-exporting.js" ], "minify": { "enabled": true, "renameLocals": true } } ] - 移除原
BundleConfig.cs中对应的Highcharts捆绑配置,改用BundlerMinifier生成的压缩文件。
内容的提问来源于stack exchange,提问作者Eitan
相关产品推荐
相关产品推荐

