错误TS2339:属性' DEFAULT_TTS_HOST' ApiAiConstants'的类型'类型不存在

时间:2018-05-24 12:05:07

标签: angular typescript

我正在关注这个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

3 个答案:

答案 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)

  1. 第一次更改: 我确实进入并在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。

  2. 然后我运行此构建命令:

    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。 这应该可以解决您的问题,要了解有关版本的更多信息,可以访问

  

https://www.npmjs.com/package/api-ai-javascript#200-beta21