npm 创建png/pdf与highcharts-export-server错误

pinkon5k  于 9个月前  发布在  Highcharts
关注(0)|答案(1)|浏览(60)

我安装了node.js LTS版本18.17.1(包括npm 9.6.7)。

prompt$ node 
Welcome to Node.js v18.17.1.

prompt$ npm version
npm version
{
  npm: '9.6.7',
  node: '18.17.1',
  acorn: '8.8.2',
  ada: '2.5.0',
  ares: '1.19.1',
  brotli: '1.0.9',
  cldr: '43.0',
  icu: '73.1',
  llhttp: '6.0.11',
  modules: '108',
  napi: '9',
  nghttp2: '1.52.0',
  nghttp3: '0.7.0',
  ngtcp2: '0.8.1',
  openssl: '3.0.10+quic',
  simdutf: '3.2.12',
  tz: '2023c',
  undici: '5.22.1',
  unicode: '15.0',
  uv: '1.44.2',
  uvwasi: '0.0.18',
  v8: '10.2.154.26-node.26',
  zlib: '1.2.13.1-motley'
}

然后我安装了highcharts-export-server:

git clone https://github.com/highcharts/node-export-server
cd node-export-server
npm install
npm link

一切似乎都很好,没有任何错误
然后我使用这个test.js文件作为输入(在http://export.highcharts.com中找到了一个工作示例):

{
"xAxis":
{"categories":
    ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
},
"series":
[
    {"data":[1,3,2,4],"type":"line"},
    {"data":[5,3,4,2],"type":"line"}
]
}

然后我启动这个命令行:

export OPENSSL_CONF=/dev/null && highcharts-export-server --nologo 1 --logLevel 4 --infile test.js --outfile test.png --type png --width 500

它会产生这个错误和一个png(或pdf)输出文件:

phantom worker 1 unexpected data - SyntaxError: Unexpected token '}'

以下是完整的错误输出:

starting highcharts export server v2.1.0...
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] attaching exit listeners to the process..
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] Pool started: 
    maxWorkers: 1 
    initialWorkers: 1 
    workLimit: 60 
    listening to process exit: true
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] phantom 1 - spawning worker
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] starting export
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] attempting to export from input file
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] phantom - received work, finding available worker
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] phantom - found available worker
Wed Aug 30 2023 10:41:13 GMT+0200 (Central European Summer Time) [verbose] phantom 1 - starting work
Wed Aug 30 2023 10:41:15 GMT+0200 (Central European Summer Time) [error] phantom worker 1 unexpected data - SyntaxError: Unexpected token '}'

  phantomjs://code/worker.js:658 in loop
{"filename":"test.png"} {
  data: {
    allowCodeExecution: false,
    width: '500',
    callback: false,
    resources: false,
    scale: 1,
    constr: 'Chart',
    chart: {
      xAxis: [Object],
      series: [Array],
      chart: [Object],
      exporting: [Object]
    },
    svgstr: undefined,
    format: 'png',
    out: 'test.png',
    styledMode: false,
    asyncRendering: undefined,
    async: true,
    reqID: '',
    globalOptions: false,
    themeOptions: false,
    customCode: false,
    dataOptions: false,
    id: 1
  },
  working: true,
  ready: false,
  alive: true,
  process: <ref *1> ChildProcess {
    _events: [Object: null prototype] {
      uncaughtException: [Function (anonymous)],
      error: [Function (anonymous)],
      close: [Function (anonymous)]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _closesNeeded: 3,
    _closesGot: 0,
    connected: false,
    signalCode: null,
    exitCode: null,
    killed: false,
    spawnfile: '/home/myhome/bin/phantomjs',
    _handle: Process {
      onexit: [Function (anonymous)],
      pid: 13480,
      [Symbol(owner_symbol)]: [Circular *1]
    },
    spawnargs: [
      '/home/myhome/bin/phantomjs',
      '/home/myhome/Downloads/node-export-server/lib/../phantom/worker.js',
      '/home/myhome/Downloads/node-export-server/lib/../'
    ],
    pid: 13480,
    stdin: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: null,
      _closeAfterHandlingError: false,
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 1,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      [Symbol(async_id_symbol)]: 7,
      [Symbol(kHandle)]: [Pipe],
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: false,
      [Symbol(kSetKeepAliveInitialDelay)]: 0,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    stdout: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: null,
      _closeAfterHandlingError: false,
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      [Symbol(async_id_symbol)]: 8,
      [Symbol(kHandle)]: [Pipe],
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: false,
      [Symbol(kSetKeepAliveInitialDelay)]: 0,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    stderr: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: null,
      _closeAfterHandlingError: false,
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      [Symbol(async_id_symbol)]: 9,
      [Symbol(kHandle)]: [Pipe],
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: false,
      [Symbol(kSetKeepAliveInitialDelay)]: 0,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    stdio: [ [Socket], [Socket], [Socket] ],
    [Symbol(kCapture)]: false
  },
  workStartTime: 1693384873697,
  ondone: [Function (anonymous)],
  workcount: 13,
  incoming: "SyntaxError: Unexpected token '}'n" +
    'n' +
    '  phantomjs://code/worker.js:658 in loopn' +
    '{"filename":"test.png"}',
  id: 1,
  doDone: [Function: doDone],
  restart: [Function (anonymous)],
  work: [Function (anonymous)],
  allowRestart: true
}
Wed Aug 30 2023 10:41:15 GMT+0200 (Central European Summer Time) [notice] phantom worker 1 - process was closed
Wed Aug 30 2023 10:41:15 GMT+0200 (Central European Summer Time) [notice] terminating, killing all running phantom processes

在png结果文件中(如果是pdf输出也是一样),有这样的错误消息:

Please complete the configuration by running node build.js in the export server root.

我启动了node build.js,但当我使用npm install命令时,它会问我同样的配置问题!因此,我再次接受许可条款,并默认回答其他问题。
我再次启动命令行:

export OPENSSL_CONF=/dev/null && highcharts-export-server --nologo 1 --logLevel 4 --infile test.js --outfile test.png --type png --width 500

它总是抛出与上面相同的错误!
我尝试以多种方式安装node/npm/highcharts-export-server,但无法使用它。
谢谢你的线索

egmofgnx

egmofgnx1#

不幸的是:
1.主分支上的导出服务器不适用于Highcharts版本>10.3.3issue link)和高于16(issue link)的Node版本。
1.导出服务器要求CLI中的--infile参数为第一个参数。

  1. AtomJS已经被弃用几年了,一长串的问题与基于AtomJS的导出服务器有关,这些问题非常难以解决。
    我鼓励你尝试我们最新版本的导出服务器,它基于Puppeteer(一个现代的无头浏览器库),在那里这应该不再是一个问题。
    这里有一个简短的设置指南:https://github.com/highcharts/node-export-server#puppeteer-version-information
    您可以克隆以下分支:https://github.com/highcharts/node-export-server/tree/enhancement/puppeteer并运行npm install,您应该准备好了。
    如果您遇到最新版本的其他问题,请不要犹豫。

相关问题