Node.js 木偶演员-centos7-找不到符号

Node.js 木偶演员-centos7-找不到符号,node.js,dockerfile,centos7,puppeteer,Node.js,Dockerfile,Centos7,Puppeteer,嗨,我有一个超级简单的Docker文件来运行Docker中的木偶师: FROM node:12.2.0-alpine RUN apk update && apk upgrade && \ echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \ echo @edge http://nl.alpinelinux

嗨,我有一个超级简单的Docker文件来运行Docker中的木偶师:

FROM node:12.2.0-alpine

RUN apk update && apk upgrade && \
  echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \
  echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \
  apk add --no-cache \
  bash=4.4.19-r1 \
  git=2.20.1-r0 \
  openssh=7.9_p1-r5 \
  chromium@edge \
  nss@edge \
  freetype@edge \
  harfbuzz@edge \
  ttf-freefont@edge \
  sudo=1.8.25_p1-r2

ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init
RUN chmod +x /usr/local/bin/dumb-init
ENTRYPOINT ["dumb-init", "--"]

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true

WORKDIR /app

COPY package.json .

RUN npm install --quiet -g pm2@^3.5.1 && \
    npm install puppeteer@1.19.0 && \
    npm install --quiet

COPY app.js ./app.js

RUN addgroup -S pptruser && adduser -S -g pptruser pptruser \
  && mkdir -p /home/pptruser/Downloads \
  && chown -R pptruser:pptruser /home/pptruser \
  && chown -R pptruser:pptruser /app

USER pptruser

EXPOSE 1337

CMD [ "pm2-runtime", \
    "start", "app.js", \
    "-i", "max", \
    "--max-memory-restart", "1700M", \
    "--cron", "0 */12 * * *" \
]
到目前为止,这是一个有效的解决方案。我已经在centos7主机上运行了yum update。紧接着,应用程序拒绝正常工作,产生以下错误:

Error: LAUNCH_BROWSER
    at /app/node_modules/async/dist/async.js:171:65
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
Error: Failed to launch chrome!
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info: symbol not found

到目前为止,我还没有找到一个解决方案将其恢复原状:-(任何建议都值得赞赏。

当前alpine上最新的Chromium版本存在问题。有关更多信息,请参阅github上的这两个问题:

  • (3天前打开)带有您的确切错误消息
  • (8月9日开幕)
解决方案

目前的解决方案是将Chromium版本降级到72版。一些用户还报告说73版适合他们。您也可以尝试一下(
chromium@edge=73.0.3683.103-r0

除了将Chromium降级外,您还需要将Puppeter降级到相应的版本。对于Chromium 72,您需要使用版本
1.11.0
(有关的详细信息)

更改的Dockerfile:

RUN apk update && apk upgrade && \
  ...
  chromium@edge=72.0.3626.121-r0 \
...

RUN ...
    npm install puppeteer@1.11.0 && \

您似乎缺少一些debian依赖项:它似乎不是一个有效的解决方案,因为降级到72…会生成不同的与傀儡程序相关的错误:错误:协议错误(Fetch.enable):“Fetch.enable”在CDPSession.send的/app/node_modules/puppeter/lib/Connection.js:183:56的new Promise()中找不到(/app/node_modules/puppeter/lib/Connection.js:182:12)在NetworkManager上更新协议请求拦截(/app/node_modules/puppeter/lib/NetworkManager.js:145:22)在NetworkManager.setRequestInterception上更新协议请求拦截(/app/node_modules/puppeter/lib/NetworkManager.js:134:16)在…@DavidZaba,你能试着将木偶师降级到版本
v1.11.0
(使用chromium 72时)?这是chromium版本要使用的版本。使用v1.11.0可以消除提到的错误,但应用程序不起作用。我相信这是因为该应用程序包含了新的傀儡API,这些API已在>1.11.0版本中引入。这是一个真正的小问题,因为我们还需要看看在哪里降级该应用程序。我希望整个傀儡程序都能成功更稳定。无论如何,我会接受你的答案。@DavidZaba我在答案中添加了信息。对不起,我想这是最好的选择,直到错误被修复为止。