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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:27:41