【问题标题】:server.tsx module not found when building docker image构建 docker 映像时找不到 server.tsx 模块
【发布时间】:2021-10-28 09:18:08
【问题描述】:

当使用npm run start 在我的本地计算机上运行我的 create-react-app 服务器时,服务器启动并正常工作。但是,在尝试对我的应用程序进行 dockerize 时,出现错误:

#12 2.029 Error: Cannot find module '/usr/src/app/sms-fe/src/server.tsx'
#12 2.029     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1085:15)
#12 2.029     at Function.Module._load (internal/modules/cjs/loader.js:928:27)
#12 2.029     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
#12 2.029     at internal/main/run_main_module.js:17:47 {
#12 2.029   code: 'MODULE_NOT_FOUND',
#12 2.029   requireStack: []
#12 2.029 }
#12 2.033 npm ERR! code ELIFECYCLE
#12 2.034 npm ERR! errno 1

似乎找不到server.tsx 文件。但是,尽管我的本地计算机上没有物理 src/server.tsx 文件,但该应用程序仍然可以正常工作。我猜react-scripts 可能正在后台做某事,但我不确定是什么。

有什么想法吗?

这是我的 Docker 和 package.json 文件。

Dockerfile

FROM node:14.7-alpine

WORKDIR /usr/src/app/sms-fe

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install -g typescript

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

COPY . ./

EXPOSE 8080 

# RUN node scripts/start.js && node ./src/server.tsx
RUN ["npm", "run", "start"]

package.json

"scripts": {
    "start": "react-scripts start && node ./src/server.tsx",
...

【问题讨论】:

  • 刚刚遇到这个。看看它是否有帮助:mherman.org/blog/dockerizing-a-react-app
  • 谢谢@rexessilfie。我看过了。最后我发现了这个问题。我在没有npm run start 命令的情况下运行了容器。我认为在容器内执行了shell,发现没有package-lock.json。从我的脚本来看,我在npm install 之后运行COPY 命令。这可能会覆盖一些东西,并且由于某种原因没有复制package-lock.json 文件。交换这些解决了问题。

标签: node.js dockerfile create-react-app docker-build react-scripts


【解决方案1】:

原来是在npm install 之后运行我的COPY 命令时出现问题。引发进一步的问题。似乎两个复制命令中的第一个 (COPY package*.json ./) 没有复制我的 package-lock.json 文件,或者它被第二个 COPY 命令覆盖。

这是由以下人员发现的:

  1. 删除npm run start 命令。
  2. 运行容器使其不退出。
  3. 在容器上执行 shell 并查看文件结构。
  4. 正在运行 npm install。

修复:

确保COPY 命令在npm install 之前运行

例如

COPY . ./

RUN npm install

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2021-03-19
    • 2020-03-29
    • 1970-01-01
    • 2017-05-06
    • 2021-09-02
    • 2019-02-21
    相关资源
    最近更新 更多