如何将VSCode调试器附加到含环境变量的ts-node命令
解决VSCode调试器附加带环境变量的ts-node命令问题
问题背景
需要将VSCode调试器附加到以下使用dotenv加载环境变量的ts-node命令:
原package.json配置:
{ "runMyScript": "ts-node -r dotenv/config --transpile-only tasks/migration/myScript.ts dotenv_config_path=./local.env" }
此前尝试添加--respawn --inspect=4000参数并配合launch.json配置未成功,原launch.json:
{ "configurations": [ { "name": "RUN attach to DEV", "type": "node", "port": 4000, "request": "attach", "trace": true, "skipFiles": ["<node_internals>/**"], "restart": true } ] }
解决方案
1. 调整package.json的启动命令参数顺序
ts-node的调试参数(--inspect、--respawn)必须作为ts-node的直接参数放在命令最前端,不能和脚本参数混放。修改后的命令如下:
{ "runMyScript": "ts-node --inspect=4000 --respawn -r dotenv/config --transpile-only tasks/migration/myScript.ts dotenv_config_path=./local.env" }
注意:
dotenv_config_path=./local.env需要放在脚本文件名之后,这是dotenv/config模块解析参数的要求。
2. 更新VSCode的launch.json配置
需启用sourcemap支持(TypeScript调试必备),并指定调试协议,修改后的配置:
{ "configurations": [ { "name": "RUN attach to DEV", "type": "node", "request": "attach", "port": 4000, "trace": true, "skipFiles": ["<node_internals>/**"], "restart": true, "sourceMaps": true, "protocol": "inspector", "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ] } ] }
sourceMaps: true:让调试器识别ts-node生成的inline sourcemap,映射TypeScript源码protocol: "inspector":使用Node.js现代调试协议,确保兼容性resolveSourceMapLocations:限定sourcemap查找范围,避免干扰
3. 调试步骤
- 执行命令启动ts-node进程:
npm run runMyScript - 在VSCode的调试面板中选择
RUN attach to DEV配置,点击启动按钮完成附加
内容的提问来源于stack exchange,提问作者GorvGoyl
相关产品推荐
相关产品推荐

