我安装了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,但无法使用它。
谢谢你的线索
1条答案
按热度按时间egmofgnx1#
不幸的是:
1.主分支上的导出服务器不适用于Highcharts版本
>10.3.3
(issue link)和高于16(issue link)的Node版本。1.导出服务器要求CLI中的
--infile
参数为第一个参数。我鼓励你尝试我们最新版本的导出服务器,它基于Puppeteer(一个现代的无头浏览器库),在那里这应该不再是一个问题。
这里有一个简短的设置指南:https://github.com/highcharts/node-export-server#puppeteer-version-information
您可以克隆以下分支:https://github.com/highcharts/node-export-server/tree/enhancement/puppeteer并运行
npm install
,您应该准备好了。如果您遇到最新版本的其他问题,请不要犹豫。