如何创建 create React 应用程序的生产版本?

cco*_*der 5 docker reactjs create-react-app

我正在尝试使用 docker 创建一个生产版本,用于在线部署 create-react-app 和 Express js 后端。

这是我的泊坞窗文件:

FROM node:12.18.3
WORKDIR /app
COPY ["package.json", "package-lock.json", "./"]
RUN npm install --production
COPY . .

RUN npm run build

EXPOSE 80
CMD ["npm", "start"]

Run Code Online (Sandbox Code Playgroud)

我正在使用 npm run build 但反应开发人员工具仍然告诉它是开发构建而不是生产构建。

此外,在源中,所有不应可见的项目文件都是可见的:

在此输入图像描述

我尝试在 create-react-app 根目录的 .env 文件中添加以下语句,但项目文件仍然可见:

GENERATE_SOURCEMAP=false
Run Code Online (Sandbox Code Playgroud)

如果有人可以指导我如何解决此问题并创建生产版本,那将会很有帮助。

谢谢

cco*_*der 0

对于那些寻求解决方案的人来说,可以通过在项目目录中创建包含以下内容的 server.js 文件来解决该问题:

const express = require('express');
const serveStatic = require('serve-static');
const path = require('path');
const app = express();

// create middleware to handle the serving the app
app.use("/", serveStatic ( path.join (__dirname, '/build') ) );
// Catch all routes and redirect to the index file
app.get('*', function (req, res) {
res.sendFile(__dirname + '/build/index.html')
});

// Create default port to serve the app on
const port = process.env.PORT || 3000
app.listen(port);
Run Code Online (Sandbox Code Playgroud)

另外在 docker 文件中添加:

CMD ["node", "server.js"]
Run Code Online (Sandbox Code Playgroud)

代替

CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)