You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Vite Docker容器启动失败,报three-stdlib eval使用警告

问题分析与解决

容器停止的核心原因

你的package.json中start脚本配置的是vite build——这只是构建命令,执行完构建后进程会直接退出,所以容器启动后完成构建就立刻停止了。这个问题和日志里的eval警告无关。

解决方案步骤

1. 修正启动逻辑,让容器持续运行

有两种可选方案:

方案一:用Vite预览服务(适合开发/测试场景)

修改package.json的start脚本为vite preview:

"scripts": {
  "dev": "vite",
  "build": "vite build",
  "start": "vite preview",
  "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
  "preview": "vite preview"
}

方案二:用静态服务器运行构建产物(适合生产环境)

修改Dockerfile,使用轻量静态服务器serve运行构建好的dist文件:

FROM node:latest AS builder

WORKDIR /src

COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# 切换到生产环境镜像,安装静态服务器
FROM node:latest
WORKDIR /app
COPY --from=builder /src/dist ./dist
RUN npm install -g serve
EXPOSE 3000
CMD ["serve", "-s", "dist", "-l", "3000"]

2. 处理eval警告

日志中的警告来自three-stdlib的依赖代码,不属于业务代码问题。如果要消除这个警告,可以在vite.config.js中添加配置允许依赖中的eval:

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";

export default defineConfig({
  plugins: [react()],
  build: { 
    chunkSizeWarningLimit: 1600,
    rollupOptions: {
      plugins: [
        {
          name: 'allow-eval',
          transform(code, id) {
            if (id.includes('three-stdlib/libs/lottie.js')) {
              return code;
            }
          }
        }
      ]
    }
  },
  preview: {
    port: 3000,
    strictPort: true,
  },
  server: {
    port: 3000,
    strictPort: true,
    host: true,
  },
});

如果不在意这个警告,完全可以忽略它,不会影响项目构建和运行。

内容的提问来源于stack exchange,提问作者Shon22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:00:14