javascript - 由于源映射支持/注册,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
。
如果是本地开发环境,可以选择第一个选项。但如果没有,更好的方法是第二种。
推荐阅读
- c++ - Visual Studio 2015 中的外部“C”显式类型错误,DLL 测试代码
- python - 如何让用户名成为计算机可以使用和读取的变量?
- visual-studio-code - VS Code API 获取右括号的位置
- twitter-bootstrap - 为什么单击到其他选项卡后第一个导航选项卡的内容会被替换?
- html - 有没有更简单的方法来检查表单中的密码和重复密码是否匹配?
- python - 如何修复“在此服务器上找不到请求的 URL”apache2 + django + ec2?
- javascript - 使用 ssl 运行 socket.io
- angular - 如何在 Ionic 4 Cordova 中修复“无法确定任务 ':app:preDebugBuild' 的依赖关系”
- android - android dex文件头中校验和和签名的目的是什么?
- python - 这个函数变量如何持续到 Python 中的下一次调用?