VSCode配置Next.js开发环境 必备插件与调试设置【指南】

胖萱酱_2496

胖萱酱_2496

2026-05-28

1062人浏览

原创

vscode调试next.js服务端代码必须用attach模式,因app router下getserversideprops、api路由等运行在动态fork的子进程,需配--inspect=9229、"request":"attach"、"restart":true、localroot/remoteroot一致,并启用sourcemaps。

vscode配置next.js开发环境 必备插件与调试设置【指南】

VSCode调试Next.js服务端代码必须用attach模式

断点打在getServerSideProps或app/api/xxx/route.ts里却没反应?不是插件问题,是VSCode根本没连上真正执行代码的进程。Next.js 13+(尤其是App Router)启动后,主进程只做调度,getServerSideProps、API路由、Server Actions等全部跑在动态fork出的子进程中。直接用默认launch配置调试,VSCode attach的是空壳主进程,断点自然显示为空心圆,hover提示"Breakpoint ignored because generated code not found"。

必须改用attach模式,并确保两件事同步到位:

  • 启动命令加--inspect=9229(如"dev": "next dev --inspect=9229"),端口被占可换,但必须全局对齐
  • launch.json里配"type": "node" + "request": "attach",不能用pwa-node或node-terminal
  • "restart": true必须写上——热重载会杀旧进程拉新进程,不设这个,保存一次就断连
  • "localRoot"和"remoteRoot"都设为"${workspaceFolder}",Next.js生成的source map是相对路径,不一致就映射失败

sourceMaps不开启,断点永远找不到源文件

即使连对了进程,TSX文件里的断点还是灰的?大概率是source map根本没生成。Next.js默认不把source map写入磁盘,尤其App Router下SWC编译器默认禁用——VSCode看到的只是编译后的JS,无法回溯到你的.tsx源码。

Next.js 13.4+只需在next.config.js中加一行:

experimental: { sourceMaps: true }

旧版或自定义Webpack需手动设devtool: 'source-map'。验证是否生效:启动next dev后,检查.next/server/目录下是否存在pages/xxx.js.map或app/xxx/page.js.map文件。没有,说明配置没生效或构建没触发。

Feishu calendar sync, local ics to json data for AI agent
Feishu calendar sync, local ics to json data for AI agent

将ICS日历文件转为JSON格式,用于飞书日历导入导出及数据集成。

下载

必备插件其实就三个,别装一堆“Next.js专用”

VSCode调试Next.js不靠插件,靠配置。但以下三个插件能省掉大量手动操作和误判:

  • ESLint:实时标出useClient误用、SSR/CSR逻辑混写等典型错误,比运行时报错早一步拦截
  • Prettier:统一格式,避免因缩进/分号引发的TSX编译失败,间接减少source map生成异常
  • Tailwind CSS IntelliSense(如果用了Tailwind):补全class名时自动识别className={...}中的动态拼接,防止字符串拼错导致组件不渲染,从而误以为断点失效

其他所谓“Next.js Debugger”“Next.js Tools”类插件基本冗余,甚至可能干扰launch.json行为。

调试前先确认请求真走服务端

很多“断点不命中”其实是逻辑根本没执行。比如在app/api/hello/route.ts里打了断点,但前端用fetch发请求时走了代理、缓存或跨域重定向,实际请求压根没到本地next dev服务。

最可靠的验证方式:

  • 在API文件里加console.log('pid:', process.pid),然后用curl http://localhost:3000/api/hello直连,看终端是否输出
  • 浏览器地址栏直接访问http://localhost:3000/api/hello,避免点击按钮触发客户端导航(SPA跳转不会重新走SSR)
  • getServerSideProps只在页面首次加载时触发,后续Link跳转是客户端导航,不会重跑——别在onMounted里等它

source map路径映射、进程attach、真实执行路径,这三环缺一不可。少验一个,就容易花半天调配置,其实代码压根没跑。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vscode js

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4036

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1275

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1638

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

9563

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

900

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2444

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1489

5

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

2023.09.21

4169

3

js生成随机数方法
js生成随机数方法

JavaScript生成随机数的方法,包括使用Math.random()方法生成指定范围内的随机整数、生成随机字符串和生成随机颜色。根据具体需求,可以选择适合的方法来生成随机数,以实现各种功能 。

2023.09.25

2375

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程