【问题标题】:nodejs+puppeteer in docker: Unexpected Identifier on import statementdocker中的nodejs + puppeteer:导入语句上的意外标识符
【发布时间】:2022-02-05 00:47:33
【问题描述】:

我正在尝试在 docker 容器中运行需要 puppeteer 的应用程序,但在运行 docker 容器时出现以下错误

/usr/src/app/index.js:1
import puppeteer from 'puppeteer';
       ^^^^^^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/

我的 Dockerfile:

FROM ubuntu
WORKDIR /usr/src/app
COPY . .
RUN apt-get update
RUN apt-get install -y imagemagick ghostscript nodejs
RUN apt-get install -y npm
RUN npm ci
CMD ["node","index.js"]

我正在 Windows 机器上开发此应用程序,该应用程序在 Windows 上运行良好,但由于某种原因,当 A)在 ubuntu vm 上运行应用程序或 B)在 docker 容器中运行应用程序时,我收到此错误

【问题讨论】:

  • 检查你的 package-lock.json。看起来您在 Windows 机器上全局安装了 puppeteer。
  • Puppeteer 似乎确实存在于我的 package-lock.json 中。 npm i puppeteer 似乎只是将已安装的版本从 13.1.2 更改为 13.1.3
  • @BrandonPina 尝试使用“npm update”,它应该更新 package-lock.json

标签: node.js docker puppeteer


【解决方案1】:

这个问题的解决方案最终是通过 apt-get 安装 nodejs 安装 nodejs 10.something.something。我使用的是 es6 语法,直到 12ish 才稳定,所以我不得不修改我的 dockerfile 以安装正确版本的 nodejs

【讨论】:

    【解决方案2】:

    确保puppeteer 是您在package.json 中的依赖项的一部分,

    然后在您的脚本/usr/src/app/index.js 中尝试以下操作:

    import * as puppeteer from "puppeteer";
    

    因为我认为 puppeteer 包没有 puppeteer 导出。

    它在带有import puppeteer from 'puppeteer'; 的 Windows 上工作的事实是一个谜......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 2018-07-19
      • 2012-12-27
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多