代码之家  ›  专栏  ›  技术社区  ›  AquaTorch

如何在生产模式下正确运行React Vite项目?

  •  -1
  • AquaTorch  · 技术社区  · 1 年前

    我正在使用Vite和React,我是一个初学者,我想在服务器上以生产模式运行该项目。 这是 vite.config.js :

    export default defineConfig({
      esbuild: {
        loader: "jsx",
      },
      optimizeDeps: {
        esbuildOptions: {
          loader: {
            ".js": "jsx",
          },
        },
      },
      server: {
        port: 3000,
      }
    });
    

    在部署后服务器上运行的pod中,我有以下日志:

    Environment:
    DEV_MODE=false
    NODE_ENV=production
    DEBUG_PORT=XXXX
    Launching via npm...
    > my-project start
    > vite
    npm http fetch GET 200 https://registry.npmjs.org/npm 2333ms (cache miss)
    VITE v4.3 ready in 2303 ms
    ➜ Local: http://127.0.0.1:3000/
    ➜ Network: use --host to expose
    

    我对服务器了解不多,但让它这样运行正常吗?也在端口3000上?它看起来像是我在本地主机中得到的日志。

    如果没有,我如何在生产模式下正确运行项目,请选择合适的Vite配置?

    并且使用 react-react-app :

    Environment:
    DEV_MODE=false
    NODE_ENV=production
    DEBUG_PORT=XXXX
    Launching via npm...
    npm info it worked if it ends with ok
    npm info using npm
    npm info using node
    > @my-app start /opt/app-root/src
    > react-scripts start
    ℹ 「wds」: Project is running at http://XX.XX.XXX.XXX/
    ℹ 「wds」: webpack output is served from
    ℹ 「wds」: Content not from webpack is served from /opt/app-root/src/public
    ℹ 「wds」: 404s will fallback to /
    Starting the development server...
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Tal Rofe    1 年前

    这不是使用专用服务器为React应用程序提供服务的最佳方式,但如果你坚持,你应该使用NGINX的解决方案。首先,通过检查日志,您可以运行 vite 以启动您的应用程序。

    只是跑步 vite 启动开发服务器为您的应用程序提供服务,这对生产不好, https://vitejs.dev/guide/cli.html#dev-server

    您需要做的是,首先构建React应用程序,以使应用程序的优化静态资源准备就绪,使用 vite build , https://vitejs.dev/guide/cli.html#build

    然后,您需要使用NGINX来为您的构建工件提供服务。

    您可以使用此Dockerfile:

    FROM node:18-alpine3.17 as build
    
    WORKDIR /app
    COPY . /app
    
    RUN npm install
    RUN npm run build
    
    FROM ubuntu
    RUN apt-get update
    RUN apt-get install nginx -y
    COPY --from=build /app/dist /var/www/html/
    EXPOSE 80
    CMD ["nginx","-g","daemon off;"]
    

    那么您需要在服务器中运行:

    docker build -t vite-app .
    docker run -p 80:80 vite-app