[vercel/next.js][v7] 有时链接会停止工作。

2024-05-15 549 views
3

我没有太多信息。我更新到了 v7,每隔一段时间<Link>整个应用程序中的 s 就不再可点击,点击它们时什么也没有发生。

我没有做任何特别的事情,只是<Link href="...">链接中唯一的子元素是<a>没有属性的普通标签,除非className我想设置它们的样式。

铁:

<Link href="/products">
    <a className={classnames(classes.logo, 'nextLink')}>
        Products
    </a>
</Link>

有事了。但不知道如何重现。

回答

9

不确定,但它似乎会在热重载后的某个时刻发生。

6

更新到 7 后我注意到同样的事情,但它只发生在开发模式下。我不确定这是否与 HMR 有关。我的观察是服务器停止编译页面并且链接挂起。

幸好刷新解决了这个问题。

8

我也可以证明这一点......仅限开发,超级随机,页面重新加载修复它

1

重新打开问题

我也可以证明这一点......仅限开发,超级随机,页面重新加载修复它

我也是,重开问题吗?

0

也看到了这一点@timneutkens 我应该用正确的问题模板打开一个新问题,但不太确定如何提供复制说明,因为链接似乎在一段时间后或单击了一下后就停止工作了?

0

我也有同样的问题。该问题似乎是在用户一段时间后在网页上处于非活动状态后出现的。

4

这里同样的问题。很难一致地重现,因为它似乎只在一段时间后才会发生,而且相当随机。如果您重新加载页面,该问题就会消失。

不确定这是否会帮助任何人调试,但如果你抓住的话,next/router似乎当问题发生时,路线更改已经开始,但它永远不会完成

Router.events.on('routeChangeStart', url => {
  console.log('Navigating to:', url);
});

Router.events.on('routeChangeComplete', url => {
  console.log('Completed navigation to: ', url);
});

@timneutkens 你能重新打开这个吗?

3

@timneutkens 我完全理解为什么我们需要重现场景,但我相信我们没有人能做到这一点,因为问题是随机发生的,没有任何明确的步骤要做。当 HMR 介入并且它工作时,链接突然停止工作,我刷新并宾果游戏;已经解决了。在开发过程中每天都会发生 10 次,我使用的格式与之前版本中使用的格式相同。

我知道如果没有适当的再现场景,很难进行调试,也许我们中的一些人需要花更多的时间来调查和提出它。

7

@timneutkens 谢谢,我能够通过复制步骤进行复制。在这里开了一个新问题#5598

3

@iamandyk我没有使用material-ui,但我仍然看到这个问题

7

@iamandyk @ahmadalfy 没有下一条路线,这里没有材料用户界面,但我有同样的问题。

一切都在几分钟内完美运行,然后,随机链接在客户端停止工作,没有错误。

1

同样的情况,有时候真的很烦人。。

6

同样的问题

1

+1

7

而不是在没有复制+1的问题上发帖,这使得它基本上不可能为您提供帮助。您还可以使用 GitHub 的 ?特征。

假设您遇到与 @malimccala 相同的问题,您可以跟踪 #5598

5

所以我有一个类似的问题,但我想我找到了一个奇怪的解决方案,可以阐明这个问题。希望这会有所帮助,如果没有请告诉我。首先让我满足@timneutkens 他的要求:

错误报告 描述错误

"@zeit/next-sass": "^1.0.1"一旦我"next": "^7.0.2",Linkindex.js.更具体地说,Link当我尝试导航到已导入样式的页面时,该样式停止工作,但由于页面刷新,样式未导入到我当前所在的页面上。

重现

我正在整理一个新的投资组合,并遇到了这个问题。创建一个特定的分支只是为了在这里复制它。

如果index.js已导入样式,并且我在客户端导航到about.js导入样式的不同页面 ( ),然后刷新。样式将消失,并且元素将不起作用。Link

预期行为

单击该链接会将我导航到 中描述的路线href,无论该页面上是否导入了样式。

解决方法

您会注意到/src/pages/_app.js第 6 行已被注释掉。取消注释该行将解决该问题。这将包括影响header.js负责导航的样式

PS:next.js 新手。

3

我也有这个问题。看起来链接正在拦截点击,但没有进入所需的页面。

链接创建为

<ul>
{this.state.couponTypes.map(({id, path, label}) => (
  <li key={id}>
    <Link as={`/coupon/${label.toLowerCase()}`} href={`/coupon?type=${label.toLowerCase()}`}>
      <a>{label}</a>
    </Link>
  </li>
))}
</ul>

然后我测试了点击拦截

import Router from 'next/router'
...
...
Router.events.on('routeChangeStart', url => {
  console.log('Navigating to:', url);
});

Router.events.on('routeChangeComplete', url => {
  console.log('Completed navigation to: ', url);
});

当我点击我的链接时,我可以看到,Navigating to: /coupon/accounts但它永远不会完成。

8

尝试下一个@canary

2

@timneutkens 问题是,这种情况是随机发生的。无论如何,我会尝试一下并尽快让你知道。谢谢。

2

@samundra 然而,#5598 实际上有一个复制品可靠地重现了这个问题,我很快就修复了它。

3

我对此仍然有疑问。

4

我也有这方面的问题。它是随机发生的,但在硬刷新后会被修复。

4

请创建一个新的问题,并进行清晰、简洁的复制。谢谢 ?

4

经常发生,在一段时间不活动(10 分钟)后或多次热重载在开发模式下停止工作。

9

大家好,如果您在 v8 上仍然遇到此问题,请提交新问题。对于我们来说,跟踪具有过时上下文的旧线程中的问题是不可行的。

谢谢您的合作。