【问题标题】:Next.JS links do not work after exporting static HTMLNext.JS 链接在导出静态 HTML 后不起作用
【发布时间】:2022-02-14 19:14:53
【问题描述】:

我是 NEXT.JS 的新手,在部署静态站点时遇到了一些问题。我有一个组件Nav.tsx,看起来像这样:

const Nav = () => {
    return (
        <nav className='nav p-3 border-bottom'>
            <Link href='/' passHref>
                <a className='pointer my-auto h2'>Blog </a>
            </Link>
            <Link href='/about' passHref>
                <a className='ms-5 pointer lead my-auto'>Who We Are</a>
            </Link>
            <Link href='/services' passHref>
                <a className='ms-5 pointer lead my-auto'>Services</a>
            </Link>
            <Link href='/contact' passHref>
                <a className='ms-5 pointer lead my-auto'>Contact</a>
            </Link>
        </nav>
    );
};
export default Nav;

当我在本地运行我的开发服务器时,我可以使用这些链接来浏览我的网站。但是当我构建时,使用next build &amp;&amp; next export 链接不适用于导航。所有这些链接(/about/services/contact)都是我的pages 目录中的文件。我是否在Nav.tsx 中写了不正确的内容,或者我误解了 NEXT 的工作原理?谢谢!

【问题讨论】:

  • “这些链接不能用于导航” - 你能说得更具体些吗?单击链接时没有任何反应吗?你得到的是 404 吗?
  • 是的,当你点击一个链接时没有任何反应。
  • 您是否在开发工具网络选项卡中看到任何请求 404?或者控制台中的任何错误?

标签: javascript next.js


【解决方案1】:

2022-02-14 更新

这可以通过在next.config.js 中应用{trailingSlash: true} 来解决。详情请见How to deal with NextJS exporting files with .html extension but in<Link> there is no .html

原始答案(不起作用)

我最近遇到了同样的问题,发现可以通过将其他非索引页面如pages/search.js移动到pages/search/index.js来解决。无需通过.htaccess 等进行黑客攻击。

但是,您需要更新相对导入,以便 Next.js 仍然能够编译,例如:

import styles from '../styles/Home.module.css';

import styles from '../../styles/Home.module.css';

【讨论】:

  • 因此,如果我有一个像这样的组件可以重复使用,它的路径就会像pages/nav/index.tsx。这是否意味着如果我去 /nav 它只会显示这个小的可重用组件?有没有办法避免这种情况?
  • 在这种情况下,nav.tsx 只是一个组件,因此您无需将其转换为pages/nav/index.tsx。您只需转换那些负责/about/services/contact页面的TSX文件,它们应该分别是pages/about.tsxpages/services.tsxpages/contact.tsx
  • 啊,所以我将有 pages/index.tsx 和 hten pages/contact/index.tsx 用于我想链接到的任何地方。
  • ^^ 不幸的是没有工作。
  • 我已经更新了答案,显然你不需要将pages/about.tsx 移动到pages/about/index.tsx 等等。
猜你喜欢
  • 2023-01-14
  • 2023-01-30
  • 1970-01-01
  • 2021-04-24
  • 2021-09-25
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多