【问题标题】:Cannot launch puppeteer browser instance in docker image无法在 docker 映像中启动 puppeteer 浏览器实例
【发布时间】:2020-05-20 14:09:14
【问题描述】:

我正在使用Node.js 10 我正在尝试使用 puppeteer 创建 PDF。 这是docker文件

FROM node:10-alpine

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" ]

尝试启动浏览器实例时出现以下错误。

{ 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' }

我已确保我的 chromium 和 puppeteer 版本与许多论坛上提到的相同。我正在使用puppeteer@1.17.0,使用铬 76.0.3809.132-r0 的 alpine 边缘图像。我也试过puppeeteer@1.18.0,但问题仍然存在

【问题讨论】:

  • 这个运气好吗?我也面临同样的问题。

标签: node.js docker puppeteer


【解决方案1】:

我能够通过从此图像创建容器来解决此问题, Browserless Chrome 此图像处理所有依赖项,并且 puppeteer 具有魅力。 我建议使用此图像而不是手动添加依赖项。

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 2020-05-15
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多