Next.js 12开启experimental并发特性后API路由失效原因是什么?
问题原因
- Next.js 12 中的实验性配置
concurrentFeatures存在实现缺陷:该配置用于启用 React 18 并发特性,开启后会强制框架切换到适配 React 服务端组件的路由解析逻辑,而/pages目录下的传统 API 路由未被纳入这套新逻辑的兼容范围,因此会抛出找不到页面模块的错误。 - 你当前的
next.config.ts使用了 CommonJS 规范的module.exports导出配置,而 TypeScript 格式的配置文件默认要求使用 ES 模块规范的export default导出,配置导出格式不规范也可能加剧配置加载异常。
解决方案
根据你的项目需求选择对应方案即可:
方案1:无需保留并发特性
直接移除 concurrentFeatures 配置项,同时修正配置导出格式,修改后的 next.config.ts 内容如下:
export default { reactStrictMode: true, experimental: {} }
修改后重启开发服务,API 路由即可恢复正常。
方案2:需要使用并发特性
如果项目确实需要用到 React 18 并发相关能力,按以下步骤调整:
- 升级 Next.js 到 12.2 及以上稳定版本,该版本官方已经修复了并发特性配置和
/pages目录路由的兼容问题 - 如果你升级到 Next.js 13 及以上版本,
concurrentFeatures配置已经被废弃,React 18 并发能力默认开启,无需额外配置该实验项,也可以选择将传统 API 路由迁移到 App Router 下的 Route Handler 实现。 - 所有配置调整完成后重启开发服务即可。
内容的提问来源于stack exchange,提问作者Reza Mirzapour
相关产品推荐
相关产品推荐

