проблема кукловода с докером - ожидается строковое значение - PullRequest
0 голосов
/ 07 октября 2019

Я выполнял кукловод в nodejs для рендеринга PDF-файлов. Локально работало, но когда я использовал кукловода с докером. Тот же код выдает мне ошибку.

Я попытался заглянуть на другие форумы и увидеть, что многие другие сталкиваются с подобной проблемой. Я также позаботился о том, чтобы мои версии с хромом и кукловодом были такими же, как упомянуто на многих форумах.

Я использую puppeteer@1.17.0 (основан на выпуске 76.0.3803.0, полученном из * 1006). *https://omahaproxy.appspot.com) с изображением края альпийского, который использует хром 76.0.3809.132-r0. Я также пытался с puppeeteer@1.18.0.

Все еще сталкиваюсь с этой проблемой. Любая помощь будет оценена.

Это мой файл докера


RUN echo "http://dl-2.alpinelinux.org/alpine/edge/main" > /etc/apk/repositories
RUN echo "http://dl-2.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN echo "http://dl-2.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories

ENV CHROME_BIN="/usr/bin/chromium-browser" \
    PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"

RUN set -x \
    && apk update \
    && apk upgrade \
    && apk add --no-cache \
    udev \
    ttf-freefont \
    chromium \
    && npm install puppeteer@1.17.0

RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app

WORKDIR /home/node/app

ENV PATH /home/node/app/node_modules/.bin:$PATH

COPY package*.json ./

RUN apk --no-cache --virtual build-dependencies add \
    python \
    make \
    g++ \
    && npm install \
    && apk del build-dependencies

USER node

RUN npm install

RUN mkdir -p /home/node/app/logs

COPY --chown=node:node . .

EXPOSE 4000

EXPOSE 3050

CMD [ "node", "app.js" ]

, и это мой код JS

const puppeteer = require("puppeteer");

fetchLedgerPdf : async function (req,res,next){

const browser = await puppeteer.launch({
                headless: true,
                executablePath: '/usr/bin/chromium-browser',
                args: ['--no-sandbox', '--headless', '--disable-gpu', '--disable-dev-shm-usage']
            });
            const page = await browser.newPage();

await page.setContent()

await page.addStyleTag()

const buffer = await page.pdf({
                // path : 'page.pdf',
                format: "A4",
                scale : 0.9,
                printBackground : true,
                displayHeaderFooter : true,
                headerTemplate: '<div id="header-template" style="width:100%;text-align:center;font-size:10px !important; color:black; padding-left:10px">Page <span class="pageNumber"></span> of <span class="totalPages"></span></div>',
                footerTemplate: '<div>...</div>',
                preferCSSPageSize : true
            });

await browser.close();
   res.end(buffer);
}

, и это ошибка, которую выдает nodejs

{ Error: Protocol error (IO.read): Invalid parameters handle: string value expected
    at Promise (/home/node/app/node_modules/puppeteer/lib/Connection.js:183:56)
    at new Promise (<anonymous>)
    at CDPSession.send (/home/node/app/node_modules/puppeteer/lib/Connection.js:182:12)
    at Function.readProtocolStream (/home/node/app/node_modules/puppeteer/lib/helper.js:241:37)
    at Page.pdf (/home/node/app/node_modules/puppeteer/lib/Page.js:988:25)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  -- ASYNC --
    at Page.<anonymous> (/home/node/app/node_modules/puppeteer/lib/helper.js:111:15)
    at fetchLedgerPdf (/home/node/app/Models/post/pdfCreation.js:316:39)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  message:
   'Protocol error (IO.read): Invalid parameters handle: string value expected' }

Обратите внимание, что мое имя файла - «pdfCreation.js», а строка (316), на которую указывает ошибка, - строка, содержащая «await page.pdf»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...