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

Next.js 14.0.1 Heroku部署应用点击动态路由链接报错求助

排查Next.js 14.0.1 Heroku部署后点击动态路由报错问题

1. 确认组件用法与路由结构匹配

  • 若使用App Router(Next.js 14默认):
    • 动态路由页面需放在app/[slug]/page.jsx(或.tsx)路径下
    • return (<Link>必须从`next/link`导入,用法需为绝对路径(以`/`开头):
      ```jsx
      import Link from 'next/link';
      <Link href={`/${yourSlug}`}>查看内容</Link>
      )
  • 若使用Pages Router:
    • 动态路由页面需放在pages/[slug].jsx路径下
    • return (<Link>用法同上,确保href格式无相对路径错误。
      )

2. 关闭路由预取测试

Next.js的默认开启预取功能,可能在预取动态路由时触发异常。临时关闭预取验证:

<Link href={`/${yourSlug}`} prefetch={false}>查看内容</Link>

若关闭后点击正常,说明预取流程存在问题:需检查动态路由页面是否混用服务器/客户端组件,或页面中包含window/document等浏览器API却未添加'use client'指令。

3. 检查动态路由页面代码

  • 服务器组件中禁止直接调用浏览器API,这类代码必须放在标记'use client'的客户端组件中。
  • 页面内的异步请求需在路由切换时正确取消,避免页面卸载后请求仍执行引发Conduits相关错误:
    'use client';
    import { useEffect, useState } from 'react';
    
    export default function Page({ params }) {
      const [data, setData] = useState(null);
      useEffect(() => {
        const controller = new AbortController();
        fetch(`/api/content/${params.slug}`, { signal: controller.signal })
          .then(res => res.json())
          .then(setData)
          .catch(err => {
            if (err.name !== 'AbortError') console.error(err);
          });
        return () => controller.abort();
      }, [params.slug]);
      // 渲染逻辑
    }
    

4. 清理依赖与构建缓存

  • 本地删除node_modules、package-lock.json(或yarn.lock),重新执行npm install(或yarn install),确保依赖版本一致。
  • 通过Heroku CLI执行heroku builds:cache:purge清除构建缓存,再重新部署,避免旧缓存导致的编译异常。
  • 确认package.json中Next.js版本为14.0.1,未被其他依赖降级。

5. 排查第三方库干扰

TypeError: s().connect is not a function通常是第三方SDK(分析工具、状态管理库等)在路由切换时未正确初始化/销毁导致:

  • 临时移除页面中的第三方库代码,测试点击是否正常,逐步定位问题库。
  • 确保第三方库的初始化代码放在客户端组件中,且在组件卸载时调用对应清理方法(如disconnect、destroy)。

6. 检查Heroku构建日志

登录Heroku后台查看应用构建日志,确认动态路由页面编译是否成功,是否存在语法错误、依赖缺失等问题,优先解决构建过程中的警告或错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:43:38