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

使用highcharts-export-server 3.0.0-beta.1时startExport非函数的问题求助

问题

在Express Node.js服务器中使用highcharts-export-server 3.0.0-beta.1版本(替代已停止维护的PhantomJS)时,调用startExport方法触发错误:TypeError: exporter.startExport is not a function。

package.json配置

{
  "name": "expresspdftest",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "preinstall": "export <setting>=<value>",
    "start": "node ./bin/www"
  },
  "dependencies": {
    "base64-img": "^1.0.4",
    "body-parser": "^1.20.2",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "express": "^4.18.2",
    "fs": "0.0.1-security",
    "highcharts": "^7.1.1",
    "highcharts-export-server": "^3.0.0-beta.1",
    "http": "0.0.0",
    "http-errors": "~1.6.2",
    "jade": "~1.11.0",
    "morgan": "~1.9.0",
    "node-fetch": "^2.6.1",
    "path": "^0.12.7",
    "pdfmake": "^0.1.54",
    "request": "^2.88.0",
    "typescript": "^3.4.5",
    "winston": "^3.2.1",
    "winston-daily-rotate-file": "^3.9.0"
  }
}

调用代码片段

const exporter = import('highcharts-export-server');

async function Highcharts()
{
  console.log(exporter);
  console.log(typeof exporter);
  await exporter.initPool();
  exporter.startExport(graphic, function(err,exp)
  {
    // ...后续逻辑
  });
}
解决方案

1. 修复模块导入错误

import('highcharts-export-server')是动态导入,返回的是Promise对象,不是直接的模块实例,导致无法直接调用initPool和startExport。有两种修复方式:

方式一:用await处理动态导入

async function Highcharts()
{
  // 等待动态导入完成,获取实际模块
  const exporter = await import('highcharts-export-server');
  await exporter.initPool();
  exporter.startExport(graphic, function(err, exp) {
    // ...后续逻辑
  });
}

方式二:改用CommonJS require语法

如果项目未使用ES模块,直接用require更稳妥:

const exporter = require('highcharts-export-server');

async function Highcharts()
{
  await exporter.initPool();
  exporter.startExport(graphic, function(err, exp) {
    // ...后续逻辑
  });
}

2. 适配3.x版本API

highcharts-export-server 3.x基于Puppeteer重构,API和旧版(PhantomJS时代)存在差异:

  • 确认startExport是否已被重命名:3.x版本中可能需要使用export或render方法(可查看模块源码导出确认)
  • 3.x更推荐Promise风格调用,可替换回调为async/await:
    try {
      const result = await exporter.startExport(graphic);
      // 处理导出结果
    } catch (err) {
      // 处理错误
    }
    

3. 版本选择建议

如果需要完全兼容旧版代码,可临时降级到highcharts-export-server 2.x版本(最后一个基于PhantomJS的稳定版);长期来看建议迁移到3.x的新API,避免依赖已停止维护的PhantomJS。

内容的提问来源于stack exchange,提问作者Sebastiano Parisi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:09:02