Node.js环境下Gemini AI集成history参数报错求助
Gemini Node.js SDK history参数错误排查
问题现象
- 复制Gemini官方文档代码到Node.js服务器后,使用
history参数触发错误,将history设为null时操作可正常执行 - 错误提示:
{"error": "Cannot use 'in' operator to search for 'text' in H"}
出错代码片段
history: [ { role: "user", parts: : "Hello, I have 2 dogs in my house.", }, { role: "model", parts: "Great to meet you. What would you like to know?", }, ], generationConfig: { maxOutputTokens: 100, },
错误栈信息
TypeError: Cannot use 'in' operator to search for 'text' in H at validateChatHistory (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\@google\generative-ai\dist\index.js:760:25) at new ChatSession (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\@google\generative-ai\dist\index.js:816:13) at GenerativeModel.startChat (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\@google\generative-ai\dist\index.js:1035:16) at C:\myprojects\chat_app_generativeai_dartfrog\server\routes\chat.js:21:22 at Layer.handle [as handle_request] (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\express\lib\router\layer.js:95:5) at next (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\express\lib\router\route.js:149:13) at Route.dispatch (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\express\lib\router\route.js:119:3) at Layer.handle [as handle_request] (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\express\lib\router\layer.js:95:5) at C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\express\lib\router\index.js:284:15 at Function.process_params (C:\myprojects\chat_app_generativeai_dartfrog\server\node_modules\express\lib\router\index.js:346:12)
解决方法
- 修复语法错误:代码中
parts: : "Hello..."多了一个冒号,这是JS语法错误,导致SDK无法正确解析parts字段,进而在校验聊天历史时抛出异常。修正后去掉多余的冒号即可。 - 确认
parts格式合规:Gemini SDK允许parts直接传字符串,或者传包含text字段的对象数组,两种格式都能正常识别。
修正后的代码(字符串格式)
history: [ { role: "user", parts: "Hello, I have 2 dogs in my house.", }, { role: "model", parts: "Great to meet you. What would you like to know?", }, ], generationConfig: { maxOutputTokens: 100, },
修正后的代码(对象数组格式)
history: [ { role: "user", parts: [{ text: "Hello, I have 2 dogs in my house." }], }, { role: "model", parts: [{ text: "Great to meet you. What would you like to know?" }], }, ], generationConfig: { maxOutputTokens: 100, },
内容的提问来源于stack exchange,提问作者sina zp
相关产品推荐
相关产品推荐

