升级NextJS至13.4.19后Express服务器路由404错误求助
NextJS 13.4.19 自定义Express服务器无法渲染pages目录路由的解决办法
1. 修复代码语法错误
你提供的server.js代码存在明显语法错误,这是导致路由无法注册的直接原因:
// 错误代码:"/dashboard"后使用了错误的闭合括号] app.get("/dashboard"], (req, res) => { return nextApp.render(req, res, "/"); });
修正为:
app.get("/dashboard", (req, res) => { return nextApp.render(req, res, "/"); });
2. 强制启用Pages Router模式
NextJS 13.4默认启用App Router,即使存在pages目录也可能出现路由解析混淆。在next.config.js中明确禁用App Router,确保优先使用Pages Router:
/** @type {import('next').NextConfig} */ const nextConfig = { experimental: { appDir: false, }, }; module.exports = nextConfig;
3. 确认Next实例的根目录配置
初始化NextApp时,必须指定正确的项目根目录,避免路由解析时找不到pages文件夹:
const nextApp = next({ dev: process.env.NODE_ENV !== 'production', dir: __dirname, // 明确指向项目根目录 });
4. 清理缓存并重建项目
升级NextJS后,旧缓存可能引发路由异常,执行以下操作:
- 删除项目根目录下的
.next文件夹 - 删除
node_modules并重新安装依赖:rm -rf node_modules && npm install - 重启开发服务器或重新构建生产包
5. 检查src目录配置
如果你的next.config.js中配置了srcDir: 'src',NextJS会优先从src目录查找路由,导致根目录的pages文件夹无法被识别。你可以:
- 移除
srcDir配置项 - 或把根目录的pages文件夹移动到src目录下,保持
src/pages结构
内容的提问来源于stack exchange,提问作者Rahul Dole
相关产品推荐
相关产品推荐

