必须用VSCode内置终端执行npm run dev,因Code Runner等插件不加载package.json的type、exports及脚本上下文,ESM场景下必报Cannot use import statement outside a module;需确认scripts中已定义dev脚本,且工作目录为项目根目录。

必须用内置终端执行 npm run dev 或等效命令,不能靠 Code Runner 插件或右键“Run Code”——后者不加载 package.json 中的 type、exports 和脚本上下文,ES Module 场景下必报 Cannot use import statement outside a module。
确认 dev 脚本已定义在 package.json 中
VSCode 终端本身不理解 “开发模式”,它只认你写的 npm 脚本。所谓开发模式,就是你手动定义的启动逻辑。
- 打开项目根目录下的
package.json,检查scripts字段是否包含类似"dev": "nodemon --watch src -e js,json --exec node src/index.js"或"dev": "ts-node-dev src/index.ts"的条目 - 没有就加一个,例如最简版:
"dev": "node --watch index.js"(Node.js 20.6+ 原生支持--watch) - 如果项目用了
"type": "module",确保脚本里用node --watch index.mjs或显式加--input-type=module,否则仍按 CommonJS 解析
在 VSCode 内置终端中执行 npm run dev
这是唯一能复现真实部署行为的方式。系统终端能跑,VSCode 终端也必须能跑——前提是环境变量已同步。
- 按
Ctrl + `(Windows/Linux)或Cmd + `(macOS)唤出内置终端 - 先验证基础命令:输入
node -v和npm -v,必须有输出;若失败,说明 PATH 未生效,需彻底退出 VSCode 并重开 - 确认当前工作目录是项目根目录(即含
package.json的文件夹),再执行:npm run dev - 若使用
yarn或pnpm,对应执行yarn dev或pnpm dev
调试时别混用 launch.json 的 launch 和 attach 模式
热重载(如 nodemon)和断点调试不能共存于同一个 launch 配置里。VSCode 调试器无法接管子进程重启逻辑。
- 要边改边跑又保断点?必须分两步:
① 终端手动运行:nodemon --inspect-brk index.js(--inspect-brk表示启动即暂停)
② 在.vscode/launch.json中配"request": "attach",端口默认9229 - 错误示范:
"program": "nodemon"或"args": ["--watch", "index.js"]—— VSCode 会尝试直接执行nodemon二进制,但调试器无法注入 - 验证是否连上:在代码里加
console.log(process.execArgv),看输出是否含--inspect-brk
最容易被忽略的是:npm run dev 启动后,终端输出日志是否完整可见。如果看不到 Server running on http://localhost:3000 这类关键行,大概率是 launch.json 里漏了 "console": "integratedTerminal",导致日志被吞进调试后台——而你其实根本没在“看”服务运行状态。











