VS Code调试TypeScript Azure Functions时Node.js版本异常排查
问题描述
我正尝试在VS Code中调试Azure Function App,该应用是按照Azure官方文档在VS Code中创建的。创建过程中生成的.vscode目录包含以下配置:
.vscode/launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Attach to Node Functions", "type": "node", "nodeVersionHint": 18, "request": "attach", "port": 9229, "preLaunchTask": "func: host start" } ] }
.vscode/settings.json
{ "azureFunctions.deploySubpath": ".", "azureFunctions.postDeployTask": "npm install (functions)", "azureFunctions.projectLanguage": "TypeScript", "azureFunctions.projectRuntime": "~4", "debug.internalConsoleOptions": "neverOpen", "azureFunctions.preDeployTask": "npm prune (functions)" }
启动调试器时收到错误:
Azure Functions Core Tools
Core Tools Version: 4.0.5085 Commit hash: N/A (64-bit)
Function Runtime Version: 4.16.4.20366[2023-08-16T19:33:11.815Z] [error] Incompatible Node.js version (v20.3.1). Refer to our documentation to see the Node.js versions supported by each version of Azure Functions
我的NVM默认版本是18.17.1,执行nvm list结果如下:
-> v18.17.1 system default -> 18 (-> v18.17.1)
已确认VS Code使用的shell与本地一致,且通过NVM彻底删除了Node.js v20版本。想知道:VS Code中是否还有其他针对调试器的Node.js版本配置位置?
可能的配置位置及解决方法
- 任务配置文件(tasks.json):检查
.vscode/tasks.json中是否有自定义的func: host start任务,若存在,确认是否指定了错误的Node版本路径,修改为NVM管理的v18.17.1版本路径(可通过nvm which 18获取),或确保任务使用当前shell的默认Node版本。 - VS Code Node路径设置:在VS Code设置中搜索
nodePath,若手动指定了Node版本路径,修改为NVM中v18.17.1的安装路径。 - Azure Functions扩展配置:在VS Code设置中搜索
azureFunctions.nodeRuntimeVersion,若设置了错误版本,改为18即可。 - 项目本地版本指定文件:检查项目根目录是否存在
.nvmrc或.node-version文件,若文件内指定了20,修改为18。这类文件会被NVM和VS Code识别,自动切换对应版本。 - 重启VS Code清除缓存:关闭所有VS Code窗口后重新打开,确保终端加载最新的NVM环境变量,避免旧版本缓存导致识别错误。
内容的提问来源于stack exchange,提问作者Moglash
相关产品推荐
相关产品推荐

