Pubnub Angular2教程中的ChatEngineCore出现问题

时间:2018-08-11 02:16:11

标签: angular pubnub

我得到了错误

“属性'create'在类型'typeof ChatEngineCore'上不存在”和

“类型'ChatEngineCore'的类型上不存在属性'插件'

当我尝试在PubNub Angular2 Chatbot教程上调用ChatEngineCore.create和ChatEngineCore.plugin时。

有什么想法吗?我是否缺少简单的东西?这是直接从PubNub的教程复制的代码:

import { Injectable } from '@angular/core';
import { ChatEngineCore } from 'chat-engine';

@Injectable()
export class ChatEngine {
  instance: any;
  create: any;
  plugin: any;
  me: any = { state: {} };
  chat: any = {};
  chats: any[] = [];
  constructor() {
    // Make sure to import ChatEngine first!
    this.instance = ChatEngineCore.create({
      publishKey: 'MY-PUBLISH-KEY',
      subscribeKey: 'MY-SUBSCRIBE-KEY'
    },
    {
      debug: true,
      globalChannel: 'chat-engine-angular2-simple'
    });
    this.create = ChatEngineCore.create.bind(this);
    this.plugin = ChatEngineCore.plugin;
  }

  newChat(user) {
    // define a channel
    let chat = new Date().getTime();
    // create a new chat with that channel
    let newChat = new this.instance.Chat(chat);
    // we need to auth ourselves before we can invite others
    newChat.on('$.connected', () => {
      // this fires a private invite to the user
      newChat.invite(user);
      // add the chat to the list
      this.chats.push(newChat);
    });
  }
}

2 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但是,由于我已经解决了同样的问题,这种解决方法可能会帮助其他人。

由于ChatEngineCore是全局声明的,所以我要做的是删除其导入,然后直接从window对象中调用它:

this.instance = window['ChatEngineCore'].create({ ... });

希望以后chat-engine软件包的更新将解决此导入错误。

答案 1 :(得分:0)

ChatEngineCore具有create和plugin属性,但它们并不直接存在于其中。

它们在ChatEngineCore类的对象实例的原型内。

要访问我们,我们需要使用命令:

ChatEngineCore.prototype.create()
ChatEngineCore.prototype.plugins

:)