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

使用@react-three/drei遇504错误,调整Vite配置后仍有问题求助

解决Vite中使用@react-three/drei OrbitControls时的504(Outdated Optimize Dep)错误

问题背景

使用@react-three/drei的OrbitControls组件时,出现Failed to load resource: the server responded with a status of 504 (Outdated Optimize Dep)错误,尝试在vite.config.js中添加optimizeDeps: { exclude: ['@react-three/drei','three'] }后引发新错误,目标是实现可拖拽的3D模型画布。

解决方案

1. 恢复Vite依赖优化配置

移除vite.config.js中的optimizeDeps.exclude配置——@react-three/drei和three需要Vite进行预构建,排除会破坏正常的依赖处理流程。修改后的配置文件:

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

export default defineConfig({
  plugins: [react()]
});

2. 清除Vite缓存

504错误本质是Vite的预构建缓存过期或损坏,执行以下操作清除缓存:

  • 删除Vite缓存目录:
rm -rf node_modules/.vite
  • 或者直接运行带强制清除缓存的开发命令(你的package.json已配置dev脚本为vite --force):
npm run dev

3. 确保OrbitControls的正确使用

OrbitControls必须嵌套在@react-three/fiber的Canvas组件内部,示例Test.jsx代码:

import { Canvas } from '@react-three/fiber';
import { OrbitControls } from '@react-three/drei';

function Test() {
  return (
    <Canvas>
      {/* 示例3D对象 */}
      <mesh position={[0, 0, 0]}>
        <boxGeometry args={[2, 2, 2]} />
        <meshStandardMaterial color="#ff4444" />
      </mesh>
      {/* OrbitControls需放在Canvas内部才能生效 */}
      <OrbitControls enableDamping />
    </Canvas>
  );
}

export default Test;

4. 可选:重新安装依赖(若缓存清除后仍有问题)

如果怀疑依赖包损坏,执行以下命令重装:

rm -rf node_modules package-lock.json
npm install

原理说明

Vite的optimizeDeps.exclude用于标记无需预构建的包,而@react-three/drei和three属于需要预构建的第三方库,排除它们会导致Vite无法正确解析模块导入,引发错误。504错误是预构建缓存过时导致的,清除缓存并恢复默认配置即可让Vite重新正确处理这些依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:23:29