
后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载本指南面向使用 Midwaymidwayjs/koa等 Web 框架进行开发的工程师系统讲解如何在 VSCode 与 WebStorm/IDEA 中为 Midway 项目配置断点调试。读完本文你将掌握 JavaScript Debug Terminal 免配置调试、launch.json精确调试、IDE npm 运行配置调试三种方案并理解 Midway 启动过程与调试器交互的底层原理从而在本地开发、单元测试等场景中高效定位问题。调试前置先理解npm run dev做了什么Midway 项目的开发启动命令统一收敛在package.json的scripts中。以仓库内置示例 samples/koa-esm-app/package.json 为例{ scripts: { dev: cross-env NODE_ENVlocal mwtsc --watch --run midwayjs/mock/app, test: cross-env NODE_ENVunittest mocha } }这条dev命令做了三件事通过cross-env把NODE_ENV显式设置为local对应 Midway 的本地开发环境参见文档 site/docs/environment.md 对环境的说明通过mwtsc --watch对 TypeScript 源码进行增量编译并监听文件变化实现热重载通过--run midwayjs/mock/app调用 midwayjs/mock 提供的应用启动入口直接在TypeScript 源码上启动应用。这正是 Midway 调试的关键点开发模式下应用运行的是src目录下的.ts源码而非编译后的dist因此断点可以直接打在.ts源码行上。从源码看packages/mock/src/creator.ts 中的create方法在启动时显式设置了process.env.MIDWAY_TS_MODE true而 packages/bootstrap/src/bootstrap.ts 的getBaseDir()也会依据是否 TypeScript 环境来决定加载src还是dist从而保证断点命中源码。应用启动后默认监听7001端口文档 site/docs/quickstart.md 中通过npm run dev后访问http://127.0.0.1:7001即可看到Hello midwayjs!。如果你想换端口可以直接修改scripts例如dev: cross-env NODE_ENVlocal mwtsc --watch --run midwayjs/mock/app --port 6001理解了这些下面的调试配置才能做到知其然也知其所以然。在 VSCode 中调试方法一JavaScript Debug TerminalVSCode 在终端下拉菜单中内置了一个特殊终端JavaScript Debug Terminal。点击它创建出的终端自带调试能力无需任何launch.json配置输入任意命令都会自动进入 Debug 模式。具体步骤在 VSCode 顶部菜单打开终端Terminal点击终端面板右侧的下拉箭头在列表中选择JavaScript Debug Terminal在新终端中输入npm run dev或npm test等任意命令在源码上打好断点发起 HTTP 请求如访问http://127.0.0.1:7001即可命中断点。这种方式尤其适合快速验证不需要关心端口、环境变量等细节VSCode 会自动把命令产生的进程以及其派生的子进程纳入调试器管理。在 VSCode 中调试方法二配置launch.json当需要对启动参数做精细控制如固定端口、指定环境变量、崩溃自动重启时推荐使用 VSCode 启动配置文件。创建启动文件在 VSCode 中按下CtrlShiftPmacOS 为CmdShiftP打开命令面板输入Debug: Open launch.json或直接点击左侧运行和调试面板的创建 launch.json 文件选择Node.js模板VSCode 会为你的项目创建一个.vscode/launch.json文件。推荐的 Midway 配置将下面的完整配置复制进launch.json{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息请访问: https://go.microsoft.com/fwlink/?linkid830387 version: 0.2.0, configurations: [{ name: Midway Local, type: node, request: launch, cwd: ${workspaceRoot}, runtimeExecutable: npm, windows: { runtimeExecutable: npm.cmd }, runtimeArgs: [ run, dev ], env: { NODE_ENV: local }, console: integratedTerminal, protocol: auto, restart: true, port: 7001, autoAttachChildProcesses: true }] }配置好后在源码任意位置打上断点点击运行和调试面板中的Midway Local启动即可。下面逐项说明关键参数的作用参数作用与建议runtimeExecutable指定要执行的程序为npmWindows 下通过windows.runtimeExecutable覆盖为npm.cmd保证跨平台可用。runtimeArgs传给 npm 的参数[run, dev]等价于在终端执行npm run dev最终调用你package.json中的 dev 脚本。cwd工作目录设为${workspaceRoot}即 VSCode 打开的项目根目录确保 npm 能找到package.json也保证 Midway 以项目根目录作为appDir参见 packages/bootstrap/src/bootstrap.ts。env设置启动环境变量这里显式写入NODE_ENV: local与 dev 脚本中的cross-env NODE_ENVlocal保持一致确保 Midway 按本地环境加载配置与组件例如midwayjs/info仅在local环境启用见 samples/koa-esm-app/src/configuration.ts。console设为integratedTerminal让应用日志输出到 VSCode 集成终端便于与调试面板联动观察。restart设为true后应用进程崩溃或退出时会自动重启调试会话配合--watch热重载体验更佳。port调试器监听端口与 Midway 应用默认监听端口7001保持一致避免调试器与应用端口冲突。autoAttachChildProcesses自动附加到应用派生的子进程配合mwtsc --watch等会 fork 子进程的工具链保证所有进程都能被调试器接管。从源码理解端口参数的影响Midway 应用监听端口的解析逻辑集中在 packages/web-koa/src/framework.ts 的启动过程中优先读取process.env.MIDWAY_HTTP_PORT其次使用配置中的listenOptions.port当端口为0时框架会自动调用getFreePort()分配一个空闲端口并将实际端口写回process.env.MIDWAY_HTTP_PORT可通过框架的getPort()读取最终通过this.server.listen(listenOptions)启动 HTTP 服务。因此如果你在scripts里通过--port 6001修改了应用端口建议同步把launch.json中的port改为6001该值用于 VSCode 调试器自身避免与应用端口混淆造成冲突。结合 mock 工具链理解启动链路--run midwayjs/mock/app背后是 packages/mock/src/creator.ts 的完整引导逻辑create会读取项目package.json判断模块加载类型esm或commonjs、自动将baseDir指向src、创建 mock 专用容器并初始化全局应用上下文。也就是说调试时应用走的正是测试与开发共用的 mock 启动链路所以你在测试用例中遇到的启动问题如 site/docs/mock.md 中描述的createApp、mockContext等用法在调试会话中往往可以复现便于前后对照定位。在 WebStorm / IDEA 中调试JetBrains 系 IDEWebStorm、IntelliJ IDEA Ultimate通过Run/Debug Configurations支持对 npm 脚本的断点调试配置步骤如下。第一步新建 npm 运行配置打开Run运行菜单选择Edit Configurations...编辑配置点击左上角在列表中选择npm在右侧package.json一栏选择你的项目根目录下的package.json文件。第二步选择要调试的 Scripts在配置面板中Scripts下拉框会自动列出你package.json中scripts段配置好的全部命令dev、test、build等。选择你希望调试的命令例如dev或test调试开发启动流程选择dev调试单元测试选择testMidway 测试基于 jest参考 packages/mock/src/creator.ts 中close对测试环境的处理测试进程同样可被 IDE 调试器接管。如需修改开发端口与前面一致改scripts中的dev命令例如加上--port 6001。第三步打断点并执行调试在.ts源码行号处点击打上断点点击 IDE 工具栏的Debug按钮虫子图标启动调试。应用启动后向http://127.0.0.1:7001发起请求即可在断点处暂停查看变量、调用栈并单步执行。断点调试实战技巧与常见问题技巧一在框架启动流程中打断点如果想观察 Midway 应用从启动到就绪的完整过程可以在以下位置打断点packages/bootstrap/src/bootstrap.ts 的Bootstrap.run()其中注册了SIGINT/SIGTERM等信号处理和uncaughtException兜底日志并打印[midway:bootstrap] current app startedpackages/web-koa/src/framework.ts 的server.listen回调可观察端口绑定与MIDWAY_HTTP_PORT环境变量的写入时机应用自身的 configuration.ts 中onReady生命周期方法可观察中间件、过滤器注册的实际执行顺序。技巧二调试测试用例调试 jest 用例时建议在 IDE/VSCode 中选择test脚本而不是dev并在 packages/mock/src/creator.ts 的create入口处打断点确认MIDWAY_TS_MODE与baseDir是否符合预期。结合 site/docs/testing.md 的说明可以顺藤摸瓜排查用例启动失败类问题。常见问题排查现象排查方向断点未命中确认启动的是devTypeScript 源码模式而非start生产模式走dist编译产物确认NODE_ENV为local确认源码文件已保存且mwtsc --watch编译成功。端口冲突应用端口默认7001与 VSCode 调试器port参数是两个概念若应用端口被占用参考上文修改scripts中的--port调试器端口冲突时调整launch.json的port。Windows 下调试启动失败确认launch.json使用了windows.runtimeExecutable: npm.cmd分支同时注意 Windows 下文件换行可能引发 eslint 报错参见 site/docs/faq/git_problem.md。子进程无法被调试确保autoAttachChildProcesses为true使用 JavaScript Debug Terminal 时 VSCode 默认自动附加所有子进程。总结Midway 的调试链路非常清晰开发模式下应用直接运行 TypeScript 源码端口默认7001启动过程由midwayjs/mock与midwayjs/bootstrap协作完成。基于这一前提VSCode 用户既可以用 JavaScript Debug Terminal 零配置起步也可以用launch.json做精细化控制WebStorm/IDEA 用户通过 npm 运行配置即可获得同等的断点调试能力。掌握这些方法后无论是排查业务逻辑、框架生命周期问题还是调试测试用例都能做到有的放矢。赞分享后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载相关推荐NodeGui 在 VSCode 中调试 Qode 进程launch.json 配置与断点调试完全指南NodeGui 在 VSCode 中调试 Qode 进程launch.json 配置与断点调试完全指南 NodeGui 桌面应用并非运行在标准 node 进程桌面应用跨平台motia脚本调试VSCode断点配置全指南motia脚本调试VSCode断点配置全指南 引言为什么需要专业的调试配置 在事件驱动的智能自动化框架motia中脚本调试面临三大挑战多语言混合执行后端流程编排任务调度可观测性终极yargs断点调试指南从VSCode配置到源码调试的完整技巧终极yargs断点调试指南从VSCode配置到源码调试的完整技巧 yargs作为现代命令行参数解析工具广泛应用于Node.js项目中。本文将详细介绍如何在VCLI开发工具上一篇深入理解Anna KVS热键复制策略智能数据分片如何消除性能瓶颈下一篇Robo 3T正则表达式测试工具验证MongoDB筛选条件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考