【问题标题】:docker Cannot find module when building imagedocker构建镜像时找不到模块
【发布时间】:2020-05-01 10:18:44
【问题描述】:

我正在创建一个 nodeJS Typescript 项目并尝试创建该项目的 docker 映像。该项目在本地成功编译,但是当我尝试构建 docker 映像(使用 docker builddocker-compose up)时,它失败了,因为它“找不到模块 x”。

奇怪的是,当我尝试将RUN npm ls <module> 添加到我的dockerfile 时,它​​显示模块已成功安装。我在这里看到了其他问题,包括删除 docker-compose 文件中的volume,但由于我的甚至没有它开始,我迷路了。

如果有帮助的话,我正在尝试在 Windows 机器上完成所有这些工作。

提前致谢!

docker-compose.yml

version: '3.4'
services:
  app:
    build: .
    ports:
      - "3001:3000"
    image: app-nodejs
    container_name: appnodejs

dockerfile

FROM node:lts-alpine
USER root
ENV PORT 3000
RUN npm install -g pm2 typescript
RUN mkdir -p /app
COPY . /app/
WORKDIR /app
RUN npm install
RUN npm run build
EXPOSE ${PORT}
CMD [ "pm2-runtime", "start", "/app/ecosystem.config.js" ]

编辑: 我忘了提到它在 npm run build 时失败了,但我所做的只是运行 tsc。我可以确认我的 tsconfig 已正确复制,因为它在我尝试编译时返回“找不到模块”错误

【问题讨论】:

  • 尝试在 dockerfile 的 CMD 中给出 pm2-runtime 的绝对路径
  • 对不起,我意识到我没有解释它失败的地方。它在 npm run build 时失败,但我在那里所做的只是使用 tsc。我可以确认我的 tsconfig 已正确复制,因为它无法编译并出现“找不到模块”错误
  • 你也可以添加错误跟踪吗?

标签: node.js typescript docker npm docker-compose


【解决方案1】:

原来问题是由于缺少模块 MomentJS 引起的 https://github.com/moment/moment/issues/5494 回滚或更新到 2.25.1 后,问题似乎已解决

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 2020-10-06
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2022-01-02
    相关资源
    最近更新 更多