VSCode调试Docker中Node.js应用时出现URI格式占位符错误
问题描述
尝试配置VSCode调试Docker容器中的Node.js应用,容器能正常构建运行,但弹出错误对话框:
Format uri ('http://localhost:%s') must contain exactly two substitution placeholders
该错误未出现在VSCode的输出/终端窗口,代码和配置文件中也找不到该格式字符串,且容器内应用可正常响应HTTP请求。
VSCode终端执行的docker run命令:
docker run -dt --name "xxnodejsservicetemplate-dev" -e "DEBUG=*" -e "NODE_ENV=development" --label "com.microsoft.created-by=visual-studio-code" -p "3000:3000" -p "9229:9229" "xxnodejsservicetemplate:latest" yarn dev --debug 0.0.0.0:9229
解决思路
- 检查调试配置文件
launch.json:重点看request: "attach"类型的配置项,排查是否存在url字段错误使用%s占位符的情况(比如"url": "http://localhost:%s")。Node.js调试的attach配置通常不需要这个字段,或者应该用VSCode变量(如${port})替代占位符。 - 排查插件版本问题:把VSCode的Debugger for Node.js和Docker插件更新到最新稳定版,或者尝试回退到之前的兼容版本,避免插件bug引发格式错误。
- 重新生成调试配置:删掉现有
launch.json,通过VSCode调试面板的「添加配置」选择「Docker: Attach to Node」,让系统自动生成标准配置,避开手动配置的语法错误。 - 检查全局设置:查看VSCode的
settings.json中,是否有和JavaScript调试、Docker相关的配置项包含错误占位符,比如debug.javascript.defaultRuntimeExecutable这类字段。
内容的提问来源于stack exchange,提问作者denishaskin
相关产品推荐
相关产品推荐

