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

Next.js 15(App Router)构建部署后GLB模型无法显示问题

排查Next.js 15(App Router)部署后GLB模型无法渲染的问题
  • 检查GLTF加载错误日志
    在浏览器DevTools的Console面板搜索GLTF或three.js相关报错,useGLTF加载失败会抛出未捕获异常,可能是文件解析失败(比如部署后文件损坏)。也可以手动在控制台验证:

    const res = await fetch('/heroobject.glb');
    const buffer = await res.arrayBuffer();
    new THREE.GLTFLoader().parse(buffer, '', (gltf) => console.log('解析成功', gltf), (err) => console.error('解析失败', err));
    
  • 验证静态资源MIME类型
    确保Cloud Run返回的GLB文件MIME类型为model/gltf-binary,而非默认的application/octet-stream。如果用Nginx做静态服务,需在配置中添加:

    types {
      model/gltf-binary glb;
    }
    

    若直接用Next.js服务,可在next.config.ts中配置自定义响应头:

    const nextConfig = {
      async headers() {
        return [
          {
            source: '/heroobject.glb',
            headers: [{ key: 'Content-Type', value: 'model/gltf-binary' }],
          },
        ];
      },
      // 已有配置...
    };
    
  • 确认依赖兼容性
    检查three、@react-three/fiber、@react-three/drei版本是否与Next.js 15兼容,部分版本组合会在生产构建后出现渲染异常。建议锁定到官方推荐的兼容版本,比如:

    {
      "three": "^0.160.0",
      "@react-three/fiber": "^8.15.0",
      "@react-three/drei": "^9.92.0"
    }
    
  • 排查客户端渲染环境
    确认window.THREE在生产环境中存在,验证Three.js是否正确打包到客户端代码。也可以替换useGLTF为原生加载方式排查封装层问题:

    import { useLoader } from '@react-three/fiber';
    import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
    
    export default function Model() {
      const gltf = useLoader(GLTFLoader, '/heroobject.glb');
      return <primitive object={gltf.scene} />;
    }
    
  • 检查Canvas容器尺寸
    确认<Canvas>的父容器设置了明确的宽高(比如width: 100%; height: 100vh;),生产环境下样式重置可能导致Canvas尺寸为0,模型不可见。在DevTools的Elements面板查看Canvas元素的实际渲染尺寸,若为0则调整父组件样式。

  • CI/CD构建文件完整性检查
    在CI步骤中添加GLB文件哈希校验,确保部署到Cloud Run的文件与本地一致,避免构建时文件被损坏。同时检查Dockerfile是否正确复制public目录:

    COPY public/ public/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:01:13