Docker容器中的节点构建工件由于源映射支持/注册而无法运行



我正在使用Backpack构建我的节点应用程序。当在本地运行应用程序时,应用程序本身和构建工件都运行良好。但是,当我将构建结果移动到Docker映像并尝试运行它时,我会得到以下错误:

Error: Cannot find module 'source-map-support/register'
Require stack:
- /home/app/main.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
at Function.Module._load (internal/modules/cjs/loader.js:667:27)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/home/app/main.js:1:1)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/home/app/main.js' ]

我的Dockerfile:

FROM node:12.21-alpine
ENV NODE_ENV=production
RUN mkdir -p /home/app
COPY ./build /home/app
WORKDIR /home
CMD ["node", "./app/main.js"]

我错过了什么?背包还有其他选择吗?基本上,我想先构建我的应用程序,将人工制品移动到Docker映像中,然后运行它。我不想在图像内部构建。

您缺少node_modules
您必须将node_modules复制到容器COPY ./node_modules /home/app/node_modules
或者在docker构建期间安装它(记住复制package.json和package-lock.json(RUN npm ci
如果是本地开发环境,则可以选择第一个选项。但如果不是,更好的方法是第二种。

最新更新