我正在创建一个nodeJS Typescript项目,并试图创建该项目的docker映像。该项目在本地成功编译,但是当我尝试构建docker映像(使用docker build
或docker-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已正确复制,因为在尝试编译时它会返回“找不到模块”错误
答案 0 :(得分:0)
事实证明,问题是由缺少的模块(即MomentJS)引起的 https://github.com/moment/moment/issues/5494 回滚或更新到2.25.1之后,该问题似乎已解决