Vercel Next.JS成功/错误/成功/错误..并没有定义使用窗口刷新页面时的模式



我正在努力改进部署在Vercel上的Next.js站点。

我已经意识到,当我部署页面时,我首先会得到以下错误:

GET] /
17:53:00:19
2022-09-12T14:53:00.262Z    938c1a2e-ce7c-4f31-8ad6-2177814cb023    ERROR   Uncaught Exception  {"errorType":"ReferenceError","errorMessage":"window is not defined","stack":["ReferenceError: window is not defined","    at Timeout._onTimeout (/var/task/.next/server/pages/index.js:291:26)","    at listOnTimeout (internal/timers.js:557:17)","    at processTimers (internal/timers.js:500:7)"]}
[ERROR] [1662994380263] LAMBDA_RUNTIME Failed to post handler success response. Http response code: 400.
RequestId: 2f3b61aa-5dc8-4c12-a71c-6cc652a75ccc Error: Runtime exited with error: exit status 129
Runtime.ExitError

然后,如果我在浏览器上刷新,它会完美加载。然后,如果我再次刷新,我会再次得到相同的错误,然后如果我刷新,它会加载,以此类推

这种模式永远重复。

它可能与window和服务器端渲染有关(window不存在(,但我很难理解为什么它会导致网页访问之间的成功/错误模式交替。

我的实际代码是TypeScript,index.tsx文件上没有291行。然而,我确实在.next/static/chunks/pages.next/server/pages文件夹中传输了它们的JS版本,尽管其中一个文件夹的第291行有"use strict",另一个有注释,所以我找不到任何关于堆栈跟踪行号的有用信息。

附言:我是Next.js的新手,这是我接手的一个项目。如果我做错了什么,我很乐意得到详细的解释。

我已经通过将对window的每次调用封装在if(typeof window !== 'undefined')语句中来解决这个问题,尽管我仍然对交替的错误模式感到好奇,所以我仍然保留这个问题:

为什么它每2次出错一次,而不是总是或从不出错?

最新更新