Azure JavaScript示例Bot部署后测试遇IIS 500错误求助
问题描述
按照微软官方文档部署BotBuilder-Samples中的JavaScript版Echo Bot,使用托管标识完成部署后,通过Web Chat和Teams渠道测试时触发IIS内部服务器错误(HTTP 500.1002)。
核心错误堆栈:
Wed Aug 02 2023 02:15:36 GMT+0000 (Greenwich Mean Time): Application has thrown an uncaught exception and is terminated:ReferenceError: FinalizationRegistry is not defined at Object.<anonymous> (C:\home\site\wwwroot\node_modules\on-exit-leak-free\index.js:11:18) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Module.require (internal/modules/cjs/loader.js:692:17) at require (internal/modules/cjs/helpers.js:25:18) at Object.<anonymous> (C:\home\site\wwwroot\node_modules\pino\lib\tools.js:8:16)
排查与解决指引
1. 核心原因定位
FinalizationRegistry是ECMAScript 2021标准特性,仅支持Node.js 14.6.0及以上版本(对应V8引擎8.4及以上)。当前Azure App Service运行的Node.js版本过低,导致依赖库on-exit-leak-free(被pino日志库调用)找不到该API,引发应用崩溃。
2. 检查当前Node.js版本
- 登录Azure门户,进入目标App Service资源
- 左侧导航栏选择配置 > 常规设置
- 查看Node.js版本参数,确认是否低于14.6.0
3. 升级Node.js版本
- 在常规设置中,将Node.js版本切换至14.x、16.x或18.x(推荐长期支持LTS版本)
- 保存配置后,重启App Service实例
- 重新通过Web Chat或Teams渠道测试Bot功能
4. 辅助验证与优化
- 检查项目根目录的
package.json,确保engines字段指定了兼容的Node.js版本,示例:"engines": { "node": ">=14.6.0" } - 部署前清理本地
node_modules目录,避免将本地依赖直接打包上传(推荐依赖Azure部署流程自动构建依赖) - 查看App Service的日志流,确认重启后是否消除错误;若仍有问题,排查其他依赖库的版本兼容性
内容的提问来源于stack exchange,提问作者bbagaria
相关产品推荐
相关产品推荐

