ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【解决问题】小游戏 | cocos creator中使用vs code进行调试:把launch.json改到TaoToken

【解决问题】小游戏 | cocos creator中使用vs code进行调试:把launch.json改到TaoToken 1. Cocos Creator 小游戏调试链路为什么总在 VS Code 断点失效做 Cocos Creator 小游戏开发很多人第一步就卡在调试上编辑器里点“运行预览”能跑但 VS Code 里打断点死活不进或者进了断点却停在编译后的 bundle 里变量全是压缩名。这个问题的本质不是 VS Code 不好用而是 Cocos Creator 的调试链路分成了两段一段是编辑器与 VS Code 扩展之间的握手另一段是调试器与目标运行环境浏览器/模拟器/真机之间的连接。任何一段没对齐断点就会变成灰色空心圈。我试过在三个不同版本的 Creator 项目里复现这个问题发现最常见的根因是launch.json里的url和webRoot没跟实际预览地址对齐。Creator 默认预览端口是 7456但如果你开了多个项目或者改了偏好设置端口会漂移。另一个高频坑是源码映射Creator 把 TypeScript 编译成 JavaScript 后放在temp/或library/目录如果sourceMaps没开或者outFiles没指对VS Code 就找不到.ts源文件断点自然绑不上去。还有一个容易被忽略的点VS Code 的调试器类型。Cocos Creator 3.x 之后推荐用pwa-chrome或pwa-msedge而不是老的chrome。如果你从旧教程抄了type: chrome在新版 VS Code 里会直接报 “Configured debug type ‘chrome’ is not supported”。这个报错在社区里出现频率极高但很多人以为是插件没装反复重装扩展其实改一行 type 就能解决。所以这篇内容的目标很明确给你一套可以直接复制、逐段验证的调试配置从launch.json到settings.json再到实际发起请求验证断点命中。适合刚接触 Cocos Creator 小游戏、想在 VS Code 里做断点调试的开发者也适合已经能跑但断点不稳、想彻底理清链路的同学。下面按“先跑通再优化”的顺序来每一步都有可复制的片段和验证动作。2. TaoToken 在调试链路里的前置准备与 API Key 获取在进入具体配置之前先把调试链路里会用到的“外部依赖”理清楚。Cocos Creator 本身是本地编辑器VS Code 也是本地工具但如果你在调试过程中需要调用模型能力来做代码补全、报错解释或者自动化生成调试配置就需要一个稳定的 API 入口。TaoToken 在这里的角色是提供统一的模型调用入口让你在 VS Code 插件或脚本里直接发请求而不用自己维护多套 Key。先说清楚TaoToken 不是调试器也不替代 Cocos Creator 或 VS Code。它解决的是“调试过程中需要模型辅助”的场景比如你遇到local proxy failed这类报错想把错误日志丢给模型分析或者想让模型根据你的项目结构生成一份launch.json草稿。这些操作都需要一个可用的 API Key 和 Base URL。获取 Key 的路径很直接打开官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册后进入控制台。控制台地址是https://taotoken.net/console在 API Keys 页面可以创建新 Key。创建时建议按项目命名比如cocos-debug-vscode方便后续排查是哪个 Key 在发请求。Key 只显示一次复制后先存到本地环境变量里不要直接硬编码进launch.json因为launch.json可能会被提交到 Git。Base URL 用https://taotoken.net/api注意这个地址不带 UTM 参数是纯 API 入口。模型 ID 根据你的需求选调试场景一般用通用对话模型就够了比如claude-sonnet-4-20250514或gpt-4o这类。如果你要做长期编码辅助可以看 Coding Plan 页面https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite里面有适合 Agent 场景的套餐说明。这里要强调一个安全边界不要把生产环境的数据库连接串、真实用户数据塞进调试请求里。调试用的模型调用只传代码片段和报错信息敏感配置用占位符替换。另外TaoToken 的 API 调用是标准的 HTTP 请求你可以在 VS Code 的 REST Client 插件里直接测也可以用 curl 验证。验证命令如下把$TAOTOKEN_KEY替换成你自己的 Keycurl -X POST https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_KEY \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 用一句话解释 Cocos Creator 调试断点为什么是灰色}] }如果返回 200 并且有choices字段说明 Key 和 Base URL 都通了。如果返回 401先检查 Key 有没有复制完整再检查请求头里Bearer后面有没有多余空格。这一步跑通之后再进入 VS Code 的调试配置就不会在“到底是调试器问题还是 API 问题”之间来回猜。3. 可复制的 launch.json 与 settings.json 配置片段这一节是核心操作区。先确认你的项目结构Cocos Creator 项目根目录下一般有assets/、settings/、temp/、library/这几个目录。VS Code 的调试配置放在项目根目录的.vscode/文件夹里如果没有就手动建一个。.vscode/launch.json是调试会话的入口.vscode/settings.json是工作区级别的编辑器设置两者配合才能让断点正确绑定到 TypeScript 源文件。先给一份可以直接复制的launch.json针对 Cocos Creator 3.x VS Code 的 Chrome 调试场景{ version: 0.2.0, configurations: [ { name: Cocos Creator Debug (Chrome), type: pwa-chrome, request: launch, url: http://localhost:7456, webRoot: ${workspaceFolder}, sourceMaps: true, sourceMapPathOverrides: { webpack:///./src/*: ${workspaceFolder}/assets/*, webpack:///./assets/*: ${workspaceFolder}/assets/* }, outFiles: [ ${workspaceFolder}/temp/**/*.js, ${workspaceFolder}/library/**/*.js ], runtimeArgs: [--remote-debugging-port9222], userDataDir: ${workspaceFolder}/.vscode/chrome-debug-profile } ] }几个关键字段逐个说明。type用pwa-chrome这是 VS Code 内置的调试类型不需要额外装 Chrome 调试插件。如果你用 Edge改成pwa-msedge即可。url必须和 Creator 预览窗口的地址一致默认是http://localhost:7456但如果你在 Creator 偏好设置里改了端口这里要同步改。webRoot指向项目根目录这样 VS Code 才能把浏览器里的路径映射回本地文件。sourceMapPathOverrides是最容易配错的地方。Creator 编译后的代码里source map 的路径可能是webpack:///./src/...或webpack:///./assets/...而你的实际源文件在assets/下。上面的映射规则把这两种前缀都指向${workspaceFolder}/assets/*。如果你发现断点还是灰色打开 Chrome DevTools 的 Sources 面板看编译后文件里//# sourceMappingURL指向哪里然后按实际路径调整这个映射。outFiles告诉 VS Code 去哪里找编译产物。Creator 的中间产物一般在temp/和library/下加上这两个 glob 能让调试器更快定位到 JS 文件。runtimeArgs里的--remote-debugging-port9222是让 Chrome 开启调试端口userDataDir单独指定一个目录避免和你日常用的 Chrome 配置冲突。接下来是settings.json主要解决 TypeScript 路径识别和文件排除问题{ typescript.tsdk: node_modules/typescript/lib, files.exclude: { **/temp: true, **/library: true, **/local: true }, search.exclude: { **/temp: true, **/library: true }, debug.javascript.autoAttachFilter: onlyWithFlag, debug.javascript.terminalOptions: { skipFiles: [node_internals/**] } }typescript.tsdk指向项目本地的 TypeScript 版本避免 VS Code 用内置的旧版本导致类型提示不准。files.exclude把temp/、library/、local/从资源管理器里隐藏减少干扰但注意这不影响调试器读取这些目录。debug.javascript.autoAttachFilter设为onlyWithFlag防止 VS Code 自动附加到无关的 Node 进程上。如果你用的是 Cocos Creator 2.xlaunch.json的type可能要改成chrome并且url端口可能是 7456 以外的值。但 2.x 已经比较老了建议尽量升级到 3.x。另外如果你在调试时遇到local proxy failed先检查url能不能在浏览器里直接打开。如果浏览器都打不开说明 Creator 预览服务没起来跟 VS Code 配置无关。配置写完后在 VS Code 里按 F5 启动调试。如果一切正常会弹出一个新的 Chrome 窗口地址栏是http://localhost:7456同时 VS Code 底部状态栏变成橙色表示调试会话已连接。这时候在assets/下的.ts文件里打一个断点然后在 Creator 预览窗口里触发对应逻辑断点应该会命中。4. 验证请求与断点命中的完整操作流程配置写好了不代表就能用必须走一遍验证流程。这一节按顺序给出可执行的动作每一步都有明确的预期结果。如果某一步结果不对就停在那里排查不要往下走。第一步确认 Creator 预览服务已启动。在 Cocos Creator 编辑器里点击预览按钮等浏览器打开预览页面。记下地址栏的端口号比如http://localhost:7456。如果端口不是 7456回到launch.json把url改掉。验证方式在系统浏览器里手动打开这个地址能看到游戏画面就说明服务正常。第二步在 VS Code 里启动调试。按 F5 或点击“运行和调试”侧边栏的绿色三角。预期结果是弹出一个新的 Chrome 窗口并且 VS Code 顶部出现调试工具栏继续、单步跳过、单步进入等按钮。如果弹出的是“无法连接到调试目标”之类的错误检查runtimeArgs里的端口 9222 有没有被占用。可以用lsof -i :9222macOS/Linux或netstat -ano | findstr 9222Windows查看。第三步设置断点并触发。在assets/scripts/下随便找一个.ts文件比如游戏主逻辑的GameManager.ts在某个方法里点行号左侧打一个红点。然后在调试用的 Chrome 窗口里操作游戏触发这个方法。预期结果是 VS Code 自动跳到断点行并且变量面板里能看到当前作用域的变量值。如果断点是灰色空心圈说明源码映射没生效回到上一节检查sourceMapPathOverrides。第四步验证模型调用链路。如果你在调试过程中需要模型辅助可以在 VS Code 里用 REST Client 插件发一个请求或者直接用终端 curl。请求内容可以是当前报错日志比如把local proxy failed的完整堆栈贴进去让模型分析可能原因。验证成功的标志是返回内容里包含对报错的具体解释而不是泛泛的“请检查网络”。这一步的 Base URL 用https://taotoken.net/api模型 ID 按你选的填。第五步检查断点命中时的调用栈。在 VS Code 调试侧边栏的“调用堆栈”面板里应该能看到从浏览器事件到你的 TypeScript 函数的完整链路。如果调用栈里显示的是bundle.js而不是.ts文件说明 source map 只映射了一部分。这时候可以打开 Chrome DevTools在 Sources 面板里看webpack://下的文件结构对照调整sourceMapPathOverrides的规则。第六步测试热重载后的断点保持。Cocos Creator 支持脚本热重载修改.ts文件后保存Creator 会自动重新编译。预期结果是 VS Code 里的断点仍然有效不需要重启调试会话。如果热重载后断点失效检查outFiles是否覆盖了重新生成的 JS 文件路径。有时候 Creator 会把新编译的文件放到不同的临时目录需要把那个目录也加进outFiles。走完这六步整个调试链路就算跑通了。这时候你可以把launch.json提交到项目仓库但记得把userDataDir指向的.vscode/chrome-debug-profile加进.gitignore避免把本地 Chrome 配置提交上去。另外如果团队里有人用 Windows 有人用 macOSwebRoot和outFiles里的路径分隔符可能不一样建议用${workspaceFolder}变量而不是硬编码绝对路径。5. 常见报错排查401、local proxy failed、reading choices、OAuth调试过程中遇到的报错大致分两类一类是 VS Code 调试器本身的连接问题一类是模型 API 调用的问题。这一节把高频报错逐个拆开给出定位方法和修复动作。401 Unauthorized这个报错一般出现在调用 TaoToken API 时。先检查请求头里的Authorization字段格式必须是Bearer 你的Key中间有一个空格。如果 Key 是从控制台复制的注意有没有把首尾的换行符也复制进去。另一个常见原因是 Key 被禁用或过期去控制台https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite确认 Key 状态。如果是在 VS Code 插件里配置的检查插件设置里的 Base URL 是不是https://taotoken.net/api有没有多写或少写/v1。local proxy failed这个报错通常出现在 VS Code 调试器尝试连接浏览器调试端口时。根因是runtimeArgs里的--remote-debugging-port9222没有生效或者 9222 端口被其他程序占用。排查步骤先关掉所有 Chrome 窗口然后在终端手动执行chrome --remote-debugging-port9222看能不能启动。如果提示端口被占用换成 9223 或 9224同时更新launch.json里的runtimeArgs。另外如果你用了系统代理调试器可能会走代理导致连接失败临时关闭系统代理再试。reading choices这个报错一般出现在解析 API 响应时。典型场景是你用脚本调用模型接口返回的 JSON 里没有choices字段但代码直接读了response.choices[0]。先打印完整响应体看是不是返回了错误信息。常见原因是模型 ID 写错了比如把claude-sonnet-4-20250514写成了claude-sonnet-4服务端返回 400 而不是正常结果。另一个原因是请求体格式不对messages数组里每条消息必须有role和content两个字段。修复方式是在代码里加一层判断const data await response.json(); if (!data.choices || data.choices.length 0) { console.error(API 返回异常:, JSON.stringify(data)); return; } const content data.choices[0].message.content;OAuth 相关报错如果你在 VS Code 里用某个插件做模型调用插件可能走 OAuth 流程而不是直接填 Key。这时候报错信息里会出现OAuth token expired或invalid_grant。处理方式是重新走一遍插件的授权流程或者在插件设置里切换成 API Key 模式。如果你用的是 Claude Code 这类工具它的配置文件和 VS Code 插件是分开的需要单独检查~/.claude/settings.json或项目级的.claude/settings.json。配置三件套要写全Base URL 填https://taotoken.net/apiKey 填你的 TaoToken KeyModel ID 填具体模型名。缺任何一个都会导致 OAuth 或鉴权失败。除了上面四类还有一个隐蔽的坑VS Code 调试器版本和 Chrome 版本不匹配。比如 VS Code 1.80 配 Chrome 120 一般没问题但如果 Chrome 更新到 130 而 VS Code 还是旧版pwa-chrome调试类型可能不兼容。排查方法是看 VS Code 的“帮助 关于”里的版本号以及 Chrome 的“关于 Chrome”里的版本号。如果差距太大升级 VS Code 到最新稳定版。最后提醒一点所有报错排查都建议先看完整堆栈不要只看最后一行。很多报错的根因在堆栈中间比如local proxy failed上面几行可能写着ECONNREFUSED 127.0.0.1:9222这就直接指向端口问题。把完整堆栈复制到模型对话里让模型分析往往比手动搜索更快。模型对话入口在https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite可以直接把报错贴进去。6. 调试链路稳定后的长期编码与 Agent 接入建议断点调试跑通之后下一步自然是把调试能力扩展到日常编码和自动化流程里。Cocos Creator 小游戏的开发节奏通常是“改脚本 → 预览 → 调试 → 再改”如果每次都要手动启动调试会话效率会打折扣。这时候可以考虑把 VS Code 的任务系统和调试配置结合起来用preLaunchTask自动执行编译或检查。在launch.json里加一个preLaunchTask字段指向.vscode/tasks.json里定义的任务。比如你可以定义一个任务在启动调试前先跑一遍 TypeScript 类型检查{ version: 2.0.0, tasks: [ { label: tsc-check, type: shell, command: npx tsc --noEmit, problemMatcher: [$tsc] } ] }然后在launch.json的配置里加preLaunchTask: tsc-check。这样每次按 F5VS Code 会先跑类型检查有问题就直接报出来不会带着类型错误进调试。这个习惯能帮你省掉很多“断点命中了但变量是 undefined”的排查时间。如果你要做更长期的编码辅助比如让模型根据当前调试上下文生成修复建议可以考虑接入 Coding Plan。Coding Plan 的入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite它适合需要持续调用模型做代码生成、报错解释、单元测试生成的场景。接入方式和普通 API 一样只是套餐和配额不同。配置时同样注意三件套Base URL 用https://taotoken.net/apiKey 用控制台创建的 KeyModel ID 按套餐支持的模型填。对于 Agent 类工具比如 Claude Code 或 Cline它们的配置文件和 VS Code 调试配置是独立的。以 Claude Code 为例它的配置一般在~/.claude/settings.json里面需要填apiBase或baseUrl字段。如果你在 VS Code 里用 Cline 插件它的 MCP 配置在.vscode/cline_mcp_settings.json或全局设置里。这些配置里的 Base URL 都指向https://taotoken.net/apiKey 用同一个。注意不要把 MCP 直连到生产数据库调试用的 MCP 服务只暴露必要的工具接口。还有一个实用技巧把常用的调试配置片段存成 VS Code 的代码片段snippet。在.vscode/下建一个*.code-snippets文件把launch.json的配置模板存进去新项目直接插入不用每次重写。代码片段里可以用${workspaceFolder}变量这样跨项目也能用。最后说一个我踩过的坑Cocos Creator 在切换构建平台比如从 Web 切到微信小游戏后预览端口和编译输出目录会变。微信小游戏的调试需要单独配置url可能变成http://localhost:7456以外的地址outFiles也要加上build/wechatgame/目录。如果你在切换平台后断点失效先检查launch.json里的路径有没有跟着更新。把不同平台的配置写成多个 configuration用name区分比如Cocos Debug (Web)和Cocos Debug (WeChat)启动时在下拉框里选比每次改配置更省事。调试链路稳定之后你会发现大部分时间不再花在“为什么断点不进”上而是真正花在业务逻辑上。这时候再回头看launch.json和settings.json的那几十行配置会觉得当初花时间理清楚是值得的。如果遇到新的报错先把完整堆栈拿到模型对话里跑一遍再对照本文的排查章节定位基本能覆盖九成以上的场景。
返回列表