Node.js版Azure Functions运行报mscorlib异常与语法错误求助
问题原因
报错提示SyntaxError: Unexpected token ...的核心原因是运行Azure Functions的Node.js版本过低,不支持对象展开运算符语法。项目依赖的@tediousjs/connection-string包在代码中使用了对象展开特性,而当前工作站上Azure Core Tools实际调用的Node.js版本低于v8.3(对象展开运算符从Node.js v8.3版本开始默认支持),无法识别该语法导致报错。
你提到项目使用Node.js v14开发且其他设备运行正常,说明本地工作站的Azure Core Tools没有调用系统安装的Node.js v14,而是使用了内置绑定的旧版本Node.js。
解决方案
- 首先执行以下两个命令,确认版本匹配情况:
如果# 查看系统当前Node版本 node -v # 查看Azure Functions Core Tools实际使用的Node版本 func node --versionfunc node --version返回的版本低于v14,按以下方案修复: - 方案1:强制指定Core Tools使用Node.js 14版本
Windows系统在当前运行项目的终端执行:
如果需要永久生效,可在系统环境变量中新增set FUNCTIONS_CORE_TOOLS_NODE_DEFAULT_VERSION=14FUNCTIONS_CORE_TOOLS_NODE_DEFAULT_VERSION变量,值设为14。
Mac/Linux系统执行:export FUNCTIONS_CORE_TOOLS_NODE_DEFAULT_VERSION=14 - 方案2:升级Azure Functions Core Tools到匹配版本
运行func -v查看Core Tools版本,若为v2.x及以下旧版本,升级到v3.x或v4.x版本,即可默认支持Node.js 14运行时。 - 方案3:检查版本管理工具的生效状态
若使用nvm、nvm-windows等Node版本管理工具,确认执行func start命令的终端,已经切换到Node.js v14环境,避免多终端版本不统一问题。 - 临时降级方案(不推荐)
若暂时无法调整运行时,可将项目的mssql依赖降级到v6.x版本,该版本依赖的@tediousjs/connection-string包未使用高版本语法,可兼容旧版Node运行时。
修复完成后重新执行func start启动项目即可。
内容的提问来源于stack exchange,提问作者Hamad Rakshani
相关产品推荐
相关产品推荐

