【发布时间】: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