highcharts / node-export-server

Highcharts Node.js export server
Other
354 stars 260 forks source link

Different export results on the first and the second requests #539

Open hubaksis opened 2 months ago

hubaksis commented 2 months ago

Expected behaviour

Export images are the same despite how many times I press 'Preview' button

Actual behaviour

Results are different

This is the first run: image

This is the second and all following runs (I am just pressing 'Preview' button again) image

I cannot reproduce this issue on the official https://export.highcharts.com server.

Reproduction steps

Code used for export (paste it to the Options - Highcharts configuration object box):

{
    "chart": {
        "type": "gauge"
    },
    "title": {
        "text": "01 test",
        "enabled": false
    },
    "subtitle": {
        "text": "some text",
        "enabled": false
    },
    "xAxis": [{
            "id": null,
            "opposite": false,
            "title": {
                "text": "Time",
                "enabled": false
            },
            "usePercentFormat": false,
            "type": "category",
            "categories": ["first category"],
            "plotBands": null
        }],
    "yAxis": [{
            "tickLength": 20,
            "id": "y0",
            "opposite": false,
            "title": {
                "text": "",
                "enabled": true
            },
            "usePercentFormat": false,
            "plotBands": [{
                    "from": 0,
                    "to": 99.88244444444445,
                    "color": "#E0E0E0",
                    "thickness": 20
                }],
            "visible": true,
            "labels": {
                "distance": 25,
                "style": {
                    "fontSize": "14px"
                }
            },
            "min": 0,
            "max": 99.88244444444445,
            "tickPixelInterval": 72,
            "tickPosition": "inside",
            "tickColor": "#FFFFFF",
            "tickWidth": 2,
            "minorTickInterval": 0,
            "lineWidth": 0
        }],
    "series": [{
            "name": "test",
            "data": [[0, 90.80222222222223]],
            "visible": true,
            "type": "gauge",
            "tooltip": {
                "valueSuffix": "%"
            },
            "dataLabels": {
                "enabled": true,
                "format": "{y:,.2f}%"
            },
            "allAreas": false,
            "marker": {
                "enabled": true
            },
            "color": null,
            "dial": {
                "radius": "80%",
                "baseWidth": 12,
                "baseLength": "0%",
                "rearLength": "0%"
            },
            "pivot": {
                "radius": 6
            },
            "showInLegend": true,
            "mappieParentTotal": 0
        }],
    "credits": {
        "text": ""
    },
    "pane": {
        "startAngle": -90,
        "endAngle": 89.9,
        "center": ["50%", "75%"],
        "background": null,
        "size": "95%"
    }
}

For the container I am using docker with the following setup:

FROM node:lts-alpine
ENV NODE_ENV=production
ENV HIGHCHARTS_VERSION=11.4.6

RUN apk add --no-cache \
      chromium \
      nss \
      freetype \
      harfbuzz \
      ca-certificates \
      ttf-freefont \
      nodejs \
      yarn \
      git

ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

USER root
WORKDIR /

RUN git clone https://github.com/highcharts/node-export-server.git && \
    chown -R node /node-export-server

WORKDIR /node-export-server

USER node 

RUN rm package-lock.json && \
    npm install -S  moment moment-timezone && \
    npm install

USER root
RUN npm link --unsafe-perm

WORKDIR /node-export-server

USER node
WORKDIR /node-export-server

#RUN sed -i "s/flowmap/flowmap','series-on-point/g" lib/schemas/config.js

EXPOSE 7801
ENTRYPOINT highcharts-export-server --enableServer 1 --port 7801 --allowFileResources 1 --allowCodeExecution 1
jszuminski commented 2 months ago

Thanks @hubaksis - I've managed to reproduce it locally with your Docker config and we're currently looking into it.