一般最简单的调试方式当然是使用vconsole来输出想要的数据啦;
 next.js如果想使用的话需要在客户端环境里调用才行(服务端直接看cmd控制台就够了);
先安装vconsole
npm i -D vconsole
 
next.js不像react cli或者vue一样有一个main.ts作为入口文件,next.js的入口可以选择公共layout,但是入口的Layout一般都是服务器组件便于设置一些meta信息,所以我们选择layout的下级layout里引入vconsole
 即:
 app
 - layout.tsx
 [main]
 - layout.tsx // 这里引入vconsole
 - 其他文件…
结构是这样的
 
或者想直接在入口的layout里引入也行,方案是使用dynamic动态导入组件,这个组件里引入vconsole就行。
先说第一种:
直接在这个layout的useEffect里加载vconsole (这里只会在开发环境里启用vconsole,基于webpack/turbopack的tree shake功能,在正式环境是不会把vconsole打包进来的) 然后使用import导入三方库并初始化。
useEffect(() => {
    if (process.env.NODE_ENV === 'development') {
      let vConsole: VConsole;
      const loadVConsole = async () => {
        const VConsole = (await import('vconsole')).default;
        vConsole = new VConsole();
      };
      loadVConsole();
      return () => {
        if (vConsole) vConsole.destroy();
      };
    }
  }, []);
 
然后第二种:
新建一个tsx文件,在这个tsx组件的useEffect里复制上面的代码(这里也是为了防止正式环境把vconsole打包进去),然后在入口的layouts里使用dynamic动态导入这个组件并挂载到页面上;
import dynamic from "next/dynamic";
...
const VConsole = dynamic(() => import('./xxx.tsx'), {ssr: false});
// 然后直接使用<VConsole />这个组件就行了;因为我们设置了ssr为false告诉Next不需要服务端渲染这个组件
export default RootLayout({children}: {children: React.ReactNode}) {
	return (
		...
		<VConsole />
		{children}
		...
	)
}
                
![[linux]如何跟踪linux 内核运行的流程呢](https://img-blog.csdnimg.cn/direct/c4396f3d66e74b6e84e46fd5fe839747.png)

















