刷新后获取JS资源时,获取404时出现Next.js错误

disbfnqx  于 2022-10-01  发布在  其他
关注(0)|答案(4)|浏览(264)

我正在运行一个Next.js开发服务器。当我转到第1页,然后单击指向第2页的链接时,它工作得很好。(只是澄清一下,我使用的不是Next的<Link>标签的as道具,而是普通的旧href。)

然而,如果我随后刷新页面#2,页面本身就会加载,所有图像也会加载...但所有的Java脚本文件都会失败,并显示404:
Http://localhost:3000/page2/_next/static/chunks/main.js?ts=1612664646023网络::ERR_ABORTED 404(未找到)2LOCALHOST/:196 GET

Http://localhost:3000/page2/_next/static/development/_buildManifest.js?ts=1612664646023网络::ERR_ABORTED 404(未找到)2LOCALHOST/:1获取

Http://localhost:3000/page2/_next/static/chunks/webpack.js?ts=1612664646023网络::ERR_ABORTED 404(未找到)7LOCALHOST/:196 GET

Http://localhost:3000/page2/_next/static/chunks/main.js?ts=1612664646023网络::ERR_ABORTED 404(未找到)

有人知道我能做些什么来解决这个问题吗?

5lwkijsr

5lwkijsr1#

在继承代码中遇到了类似的问题,搜索了一百万次,这是排名靠前的结果。对于所有其他沮丧的开发人员,我的答案是,检查您的‘Link’和‘router.ush()’,特别是如果您使用的是定制路由器。Link和router.ush()应该指向服务器URL。您可以传递‘as’来屏蔽浏览器的url。

lx0bsm1f

lx0bsm1f2#

已通过从next.config.js文件中删除assetPrefix: "."解决。

此设置使资源路径基于当前页面,而不是浴缸路径URL。

即:

而不是:“test.com/_Next/file.js”

它将是:“test.com/page/_Next/file.js”

这显然不存在于此。

xriantvc

xriantvc3#

在我们的例子中,我们通过跳过处理URL的next.js路由器修复了这个问题:

<Link
    onClick={() => {
      const url = '/path/to/url';
      Router.events.emit("routeChangeStart", url);
      window.location.href = url;
    }}
  >
kb5ga3dv

kb5ga3dv4#

我试图删除资产前缀:“。来自next.config.js文件,并且工作了!

选中此处,在这种情况下应使用资产前缀:https://nextjs.org/docs/api-reference/next.config.js/cdn-support-with-asset-prefix

相关问题