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

Vercel部署Remix应用时Response.json报错问题求助

解决Vercel部署Remix后Response.json报错的问题

问题原因

Vercel默认使用的Node.js版本可能低于18,而Response.json()是Node.js 18及以上版本才支持的全局API。本地开发环境用了高版本Node所以运行正常,部署到Vercel后低版本Node不支持该方法,从而触发TypeError: Response.json is not a function错误。

解决方案

方案1:指定Vercel使用的Node.js版本

在项目根目录创建.nvmrc文件,内容写为:

18

或者在package.json中添加engines字段明确版本要求:

{
  "engines": {
    "node": ">=18"
  }
}

Vercel会自动读取配置并使用指定版本的Node环境部署,以此支持Response.json()方法。

方案2:兼容低版本Node的手动响应写法

如果暂时无法升级Node版本,直接替换Response.json()为手动构造JSON响应:

// 原写法
return Response.json({ errors: { email: "邮箱格式错误" } });

// 替换后的兼容写法
return new Response(JSON.stringify({ errors: { email: "邮箱格式错误" } }), {
  status: 400,
  headers: {
    "Content-Type": "application/json",
  },
});

方案3:使用Remix官方推荐的兼容工具函数

虽然旧的全局json()函数已废弃,但Remix v2+中可以从@remix-run/node导入官方维护的json工具函数,它会自动处理跨环境兼容性:

import { json } from "@remix-run/node";

// 在ActionFunction中使用
return json({ errors: { email: "邮箱格式错误" } }, { status: 400 });

验证步骤

重新部署项目后提交无效表单数据,确认报错是否消失。若问题仍存在,检查Vercel项目设置中的Node版本是否正确应用,或查看构建日志确认Node版本信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:30:53