NextJS getInitialProps 被 babel asyncToGenerator 调用两次
NextJS getInitialProps called twice by babel asyncToGenerator
我意识到我的 getInitialProps 被调用了两次(甚至三次),一次是用户的请求,而另一次是来自 babel asyncToGenerator ,如下所示:
localhost/[page]/babel/runtime-corejs2/helpers/asyncToGenerator.js
localhost/[page]/internal/process/task_queues.js
当用户尝试打开页面时,这两个请求破坏了我的页面,因为 getInitialProps 函数应该根据 page_name 之后的 ID 从 mongodb 获取数据,例如:localhost/[page]/[id]
。
在上述情况下,id
是babel
和internal
,因此没有返回数据。
最糟糕的是,这两个请求在用户请求页面时同时发生,因此页面永远不会打开,因为这两个请求扰乱了组件应该接收的响应。请帮忙。
处理这个问题 2 天后,我通过编辑快速路线解决了这个问题。以前我把 *?
放在 url 的末尾,以便接收路径后面的任何参数。
这是我编辑之前的样子:
app.get("/:page/:id*?", () => {});
然后我修改成了:
app.get("/:page/:id", () => {});
这两个字符解决了我的问题,尽管这意味着我的页面将无法接收任何参数,但现在它就像一个魅力。
我意识到我的 getInitialProps 被调用了两次(甚至三次),一次是用户的请求,而另一次是来自 babel asyncToGenerator ,如下所示:
localhost/[page]/babel/runtime-corejs2/helpers/asyncToGenerator.js
localhost/[page]/internal/process/task_queues.js
当用户尝试打开页面时,这两个请求破坏了我的页面,因为 getInitialProps 函数应该根据 page_name 之后的 ID 从 mongodb 获取数据,例如:localhost/[page]/[id]
。
在上述情况下,id
是babel
和internal
,因此没有返回数据。
最糟糕的是,这两个请求在用户请求页面时同时发生,因此页面永远不会打开,因为这两个请求扰乱了组件应该接收的响应。请帮忙。
处理这个问题 2 天后,我通过编辑快速路线解决了这个问题。以前我把 *?
放在 url 的末尾,以便接收路径后面的任何参数。
这是我编辑之前的样子:
app.get("/:page/:id*?", () => {});
然后我修改成了:
app.get("/:page/:id", () => {});
这两个字符解决了我的问题,尽管这意味着我的页面将无法接收任何参数,但现在它就像一个魅力。