Azure Functions部署异常:引入LangChain OpenAI后函数未部署
以下是针对该问题的排查与解决步骤:
验证依赖部署状态
本地package.json存在依赖不代表部署到Azure后依赖安装成功。可通过Azure门户进入函数应用的「高级工具(Kudu)」→「调试控制台」→「CMD」,进入site/wwwroot目录执行npm list,检查LangChain相关依赖是否已正确安装。若缺失,可手动执行npm install,或确认部署配置是否开启自动构建(如Zip部署时设置SCM_DO_BUILD_DURING_DEPLOYMENT=true)。排查模块导入兼容性
LangChain v0.2+版本拆分了核心包,原langchain/chat_models/openai路径已迁移至@langchain/openai。若使用新版本,需修改导入语句:const { ChatOpenAI } = require("@langchain/openai");同时更新package.json中的依赖为
"@langchain/openai": "^0.2.0"及以上版本。检查Node.js版本匹配度
LangChain部分版本要求Node.js 18+运行环境。进入Azure函数应用的「配置」→「常规设置」→「运行时堆栈」,确认Node.js版本为18.x或20.x,若版本过低则调整后重新部署。查看运行时错误日志
进入函数应用的「监控」→「日志流」,查看部署后的运行时输出,重点排查是否存在模块加载失败、未捕获异常等报错。也可在代码中添加导入错误捕获,便于定位问题:const { app } = require('@azure/functions'); let ChatOpenAI; try { ChatOpenAI = require("@langchain/openai").ChatOpenAI; } catch (err) { console.error("加载ChatOpenAI失败:", err); } app.http('recommendation', { methods: ['GET', 'POST'], authLevel: 'anonymous', handler: async (request, context) => { context.log(`Http function processed request for url "${request.url}"`); const name = request.query.get('name') || await request.text() || 'world'; return { body: `Hello, ${name}!` }; } });确认部署包完整性
检查部署包是否包含函数文件、package.json、package-lock.json,以及完整的node_modules目录(本地构建后部署场景)。若使用自动构建部署,需确认构建过程未遗漏依赖安装步骤。
内容的提问来源于stack exchange,提问作者wolf1729

