next.js nextjs范围错误:超出最大调用堆栈大小

u91tlkcl  于 2022-11-05  发布在  其他
关注(0)|答案(4)|浏览(239)
import React from "react";
import "../assets/style/global.scss";
import cookies from "next-cookies";
import client from "../lib/api/client";

function MyApp({ Component, pageProps }) {
  return <Component {...pageProps} />;
}

MyApp.getInitialProps = async (appContext) => {
  const appProps = await MyApp.getInitialProps(appContext);
  const { ctx } = appContext;
  const allCookies = cookies(ctx);
  const token = allCookies["accessToken"];
  if (token !== undefined) {
    client.defaults.headers.Authorization = token;
  }

  return { ...appProps };
};

export default MyApp;

登录时,我们尝试将访问令牌放入cookie中,并将cookie值放入每个api请求的头中,但我得到了这个错误。我该如何修复它?

w7t8yxp5

w7t8yxp51#

出现该错误是因为在MyApp.getInitialProps中调用MyApp.getInitialProps(appContext)会生成一个无限循环。
只需将该行替换为App.getInitialProps调用即可。

// ...
import App from 'next/app'

// ...

MyApp.getInitialProps = async (appContext) => {
    const appProps = await App.getInitialProps(appContext);
    // ...

    return { ...appProps };
};
a5g8bdjr

a5g8bdjr2#

有一天,这个错误突然出现在我正在做的一个nextjs项目上。

...
maximum call stack size exceeded
event - build page: /next/dist/pages/_error
wait  - compiling...
error - static/chunks/pages/_app.js
...

一个好老

rm -rf node_modules
yarn

帮了我大忙。

wnavrhmk

wnavrhmk3#

我也有同样的错误,使用nodejs版本16,,但当我将其降级到版本14时,消失了。
你可以这样做

npm install -g n

然后运行:

n 14.17.4

在此之后,删除node_modules文件夹,并再次重新启动应用程序。

brc7rcf0

brc7rcf04#

这曾经发生在我身上,我不小心把组件导入到它自己里面。在Layout.js里面有import RightPanel from "./"而不是import RightPanel from "../pages/rightPanel"

相关问题