Angular 6.0.3开发DialogFlow聊天机器人遇TS2339错误求助
解决Angular中api-ai-javascript的TS2339错误:DEFAULT_TTS_HOST不存在于ApiAiConstants
我来帮你搞定这个问题!你遇到的这个TypeScript错误,本质是**api-ai-javascript版本不兼容**导致的——你参考的教程用的是旧版本的库,而你当前安装的新版本已经移除了ApiAiConstants.DEFAULT_TTS_HOST这个常量。
下面给你两种解决方案,按需选择:
方案1:回退到教程兼容的旧版本(最快解决)
- 先查看你当前安装的库版本:
npm list api-ai-javascript - 卸载当前版本,安装教程对应的旧版本(比如教程常用的
2.0.0-beta.21):npm uninstall api-ai-javascript npm install api-ai-javascript@2.0.0-beta.21 --save - 重新编译你的Angular项目,这个错误应该就消失了。
方案2:适配新版本的库(推荐长期维护)
如果你想使用最新版本的api-ai-javascript(旧版本可能存在安全隐患或功能缺失),可以手动修改TTSRequest.ts中的代码:
直接把ApiAiConstants.DEFAULT_TTS_HOST替换为Dialogflow TTS服务的默认地址,或者从客户端配置中动态获取。修改后的构造函数代码如下:
constructor(protected apiAiClient: ApiAiClient, options: IRequestOptions = {}) { super(apiAiClient, options); // 替换为Dialogflow TTS的官方地址 this.uri = "https://api.api.ai/v1/tts"; const AudioContext = window.AudioContext || webkitAudioContext; if (!TTSRequest.audioContext) { TTSRequest.audioContext = new AudioContext(); } }
为什么会出现这个错误?
api-ai-javascript在后续版本迭代中,调整了内部常量的结构,移除了DEFAULT_TTS_HOST这个对外导出的常量,所以旧的教程代码在新版本库中会触发TS2339属性不存在的错误。
内容的提问来源于stack exchange,提问作者uitwaa
相关产品推荐
相关产品推荐

