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

Remix应用部署至Vercel后仅首页可加载,其他路由报404求助

解决Remix部署到Vercel后非首页路由404及Hydration错误问题

1. 配置官方Remix-Vercel适配器

Remix针对Vercel有专属适配方案,不要用通用路由规则替代,先完成以下步骤:

  • 安装适配器依赖:
    npm install @remix-run/vercel @vercel/node
    
  • 根据你的Remix版本添加配置:
    // 非Vite版:remix.config.js
    module.exports = {
      serverBuildTarget: "vercel",
      serverModuleFormat: "esm",
      // 保留原有其他配置
    };
    
    // Vite版:vite.config.js
    import { vitePlugin as remix } from "@remix-run/dev";
    import { defineConfig } from "vite";
    
    export default defineConfig({
      plugins: [
        remix({
          serverBuildTarget: "vercel",
        }),
      ],
    });
    

2. 替换为适配Remix的vercel.json

删除你当前的配置,改用以下规则,确保路由指向Remix服务端入口:

{
  "buildCommand": "remix vite:build", // 非Vite版替换为"remix build"
  "devCommand": "remix vite:dev", // 非Vite版替换为"remix dev"
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/server/index.js" // 非Vite版可能为"/build/server/index.js",需匹配实际构建路径
    }
  ]
}

3. 修复React Hydration错误(#418/#423)

这类错误源于服务端与客户端渲染内容不一致,常见修复方式:

  • 禁止在组件顶层直接访问window/document等浏览器对象,改用useEffect延迟执行:
    import { useEffect } from "react";
    
    export default function TargetRoute() {
      useEffect(() => {
        // 此处编写依赖浏览器环境的代码
        if (window) {
          // 例如初始化第三方脚本、读取本地存储等
        }
      }, []);
    
      return <div>路由内容</div>;
    }
    
  • 检查路由组件的动态渲染逻辑,确保服务端loader返回的数据与客户端完全一致,避免渲染结果出现差异。

4. 排查部署日志

在Vercel控制台查看部署构建日志,确认:

  • 依赖安装无报错
  • Remix服务端构建成功生成目标文件
  • 无编译或配置类错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:52:36