Dialogflow云函数报错:Cannot read property 'client' of undefined
解决Dialogflow Cloud Function中"Cannot read property 'client' of undefined"错误
我一眼就看出你遇到的问题根源——Node.js版本太旧,和你使用的actions-on-google库不兼容。
问题分析
你的package.json里指定了Node.js版本是~6.0,但actions-on-google@2.1.3已经不再支持Node 6了。这个版本的库依赖了Node 8及以上才有的特性(比如更完善的异步语法支持),在Node 6环境下运行时,就会出现这种找不到client属性的报错,甚至连最简单的console.log都执行不了。
解决方案
按以下步骤操作就能解决:
升级Node.js版本配置
打开package.json,把engines字段里的Node版本改成Cloud Functions支持的稳定版,比如14(目前推荐的LTS版本):"engines": { "node": "14" }注:Node 6早就被官方废弃了,Cloud Functions现在也不再对它提供支持,必须升级。
修复代码中的SignIn导入问题
你第一段代码里使用了new SignIn(),但只导入了dialogflow和Image,漏掉了SignIn的导入,补上就行:const { dialogflow, Image, SignIn } = require('actions-on-google')更新依赖包(可选但推荐)
你的依赖包版本都比较老旧,容易有其他兼容性问题,建议更新到稳定版。可以直接修改package.json的dependencies:"dependencies": { "actions-on-google": "^2.14.1", "firebase-admin": "^11.5.0", "firebase-functions": "^4.2.0", "dialogflow": "^1.2.0", "dialogflow-fulfillment": "^0.6.1" }然后运行
npm install更新本地依赖。重新部署函数
最后重新部署你的Cloud Function:firebase deploy --only functions:dialogflowFirebaseFulfillment
完成这些步骤后,再测试你的test意图,应该就能正常执行代码、返回响应,不会再出现那个报错了。
内容的提问来源于stack exchange,提问作者stkvtflw
相关产品推荐
相关产品推荐

