Azure部署的.NET8项目升级Highcharts-export-server后的故障解决
Highcharts导出服务器夏令时问题及Azure部署解决方案
我有一个基于.NET 8.0的项目,本地环境使用Node.js 12.14与npm包highcharts-export-server 2.0.24运行Highcharts导出服务器,该项目部署在**Azure Web App(.NET 8.0栈)**上,通过API调用导出服务器生成并返回图表。
夏令时切换后,生成的图表时间比实际时间早1小时,而此前的图表时间正常。已知highcharts-export-server 3.0.1版本修复了该问题,于是我将Node.js版本升级到20.14.0(满足3.0.1版本需Node.js≥16.16.0的要求),并升级highcharts-export-server到3.0.1版本,但部署后因新增依赖Puppeteer出现一系列问题:
- 运行时提示找不到Chrome浏览器;
- 执行
npx puppeteer browsers install chrome命令安装Chrome时失败; - 创建API执行安装命令成功后,Puppeteer仍无法找到Chrome;
- 设置
PUPPETEER_CACHE_DIR环境变量并通过FTP上传Chrome后,仍出现启动错误; - 设置
PUPPETEER_EXECUTABLE_PATH指向Chrome可执行文件后,服务器启动但无法找到Worker,无法生成图表。
最终我放弃在.NET项目中运行导出服务器,改用Docker容器部署到Azure Container App,实现了所需的API功能,以下是使用的Dockerfile:
FROM node:lts-alpine ENV NODE_ENV=production ENV HIGHCHARTS_VERSION=11.4.0 ENV SERVER_ENABLE=true ENV SERVER_SSL_ENABLE=true RUN apk add --no-cache \ chromium \ nss \ freetype \ harfbuzz \ ca-certificates \ ttf-freefont \ nodejs \ yarn ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser RUN npm install highcharts-export-server -g COPY . . EXPOSE 7801 ENTRYPOINT ["highcharts-export-server", "--enableServer", "1", "--port", "7801"]
内容的提问来源于stack exchange,提问作者Thomas Fabre
相关产品推荐
相关产品推荐

