我正在关注这个tutorial用于制作带有角度的聊天机器人。我收到以下错误:
node_modules / api-ai -javascript / ts / Request / TTSRequest.ts(17,31)中的错误:错误TS2339:属性' DEFAULT_TTS_HOST'在ApiAiConstants'的类型'类型中不存在。
我正在使用Angular& Angular CLI版本:6.0.3。
import {ApiAiClient} from "../ApiAiClient";
import {ApiAiConstants} from "../ApiAiConstants";
import {ApiAiClientConfigurationError, ApiAiRequestError} from "../Errors";
import {IRequestOptions} from "../Interfaces";
import XhrRequest from "../XhrRequest";
import Request from "./Request";
export class TTSRequest extends Request {
private static RESPONSE_TYPE_ARRAYBUFFER = "arraybuffer";
private static audioContext: AudioContext;
constructor(protected apiAiClient: ApiAiClient, options: IRequestOptions = {}) {
super(apiAiClient, options);
// this.requestMethod = XhrRequest.Method.GET;
this.uri = ApiAiConstants.DEFAULT_TTS_HOST;
const AudioContext = window.AudioContext || webkitAudioContext;
if (!TTSRequest.audioContext) {
TTSRequest.audioContext = new AudioContext();
}
}
"TTSREquest.ts" 84L, 2506C
答案 0 :(得分:1)
错误是正确的,Typescript抱怨您的 DEFAULT_TTS_HOST
文件中没有名为 ApiAiConstants
的变量。
要解决此问题,请按以下方式添加变量
export const DEFAULT_TTS_HOST: string = "https://api.api.ai/api/tts";
<强> EXAMPLE PROJECT
强>
为了详细解释,如果您查看内部发布的原始回购,请使用此library
import {ApiAiClient} from "api-ai-javascript";
如果查看特定库,它会在file
答案 1 :(得分:1)
我已在我的应用程序中修复了此错误,但进行了一些更改才能使其正常运行。我的第一个问题是“在'AppModule'中找不到NgModule元数据中出错。”。然后,我尝试了一些建议,但开始看到DEFAULT_TTS_HOST错误。各种建议只能解决部分问题。这些更改的组合解决了问题,并且我能够成功构建。
我正在使用Angular 6.0.9,Angular Cli 6.0.8,api-ai-javascript,2.0.0-beta.21,打字稿2.7.2(我使用的是最新版本,但它似乎不是支持角度cli,必须返回2.7.2)
第一次更改: 我确实进入并在node_modules中修复了api-ai-javascript的ApiAiConstants。区别在于它在定义的值周围有双引号而不是单引号(已更改为单引号),并添加了DEFAULT_TTS_HOST行,因此最终看起来像这样:
export namespace ApiAiConstants {
export enum AVAILABLE_LANGUAGES {
EN = 'en' as any, DE = 'de' as any, ES = 'es' as any, PT_BR = 'pt-BR' as any, ZH_HK = 'zh-HK' as any,ZH_CN = 'zh-CN' as any, ZH_TW = 'zh-TW' as any, NL = 'nl' as any, FR = 'fr' as any, IT = 'it' as any, JA = 'ja' as any, KO = 'ko' as any, PT = 'pt' as any, RU = 'ru' as any, UK = 'uk' as any }
export const VERSION = '2.0.0-beta.21';
export const DEFAULT_BASE_URL = 'https://api.api.ai/v1/';
export const DEFAULT_API_VERSION = '20150910';
export const DEFAULT_CLIENT_LANG: AVAILABLE_LANGUAGES = AVAILABLE_LANGUAGES.EN;
export const DEFAULT_TTS_HOST = 'https://api.api.ai/api/tts';
}
注意:我必须更改版本,安装了21个,但显示为20。
然后我运行此构建命令:
ng serve --aot
这是一个不能解决我的问题的建议,但是我确实收到了不同的错误消息。它抱怨我的Typescript集合中缺少main.ts和polyfills。为此,我将两者都添加到了tsconfig.spec.json中。像这样:
},
"files": [
"test.ts",
"polyfills.ts",
"main.ts"
],
我还将其添加到tsconfig.app.json中,但这可能不是必需的。我没有摆脱错误,直到我将上面的设置添加到tsconfig.spec.json:
"include":[
"../node_modules/api-ai-javascript/ts/*.ts",
"../node_modules/api-ai-javascript/**/*.ts",
"main.ts",
"polyfills.ts"
],
然后成功构建。
一个补充说明,如果它只能与ng serve --aot一起使用,请将其添加到tsconfig.app.json中以解决此问题:
"files": [
"../src/app/app.module.ts"
]
答案 2 :(得分:0)
请记住,您不应在node_modules中进行任何更改。 与其在node_modules中进行更改,不如使用更具体版本的 api-ai-javascript 。 尝试使用此命令重新安装此软件包-
npm install api-ai-javascript@2.0.0-beta.16
在此版本中,您无需在node_modules中添加DEFAULT_TTS_HOST。 这应该可以解决您的问题,要了解有关版本的更多信息,可以访问