首页 > 解决方案 > 由于源映射支持/注册,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 映像中,然后运行它。我不想在图像中构建。

标签: javascriptnode.jsdockerwebpack

解决方案


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


推荐阅读