Ошибка опций сервиса ngx-mqtt для протокола - PullRequest
0 голосов
/ 24 января 2019

В моем приложении я использую angular 7 и пакет ngx-mqtt "ngx-mqtt": "^ 6.8.3".Приложение работает по протоколу https, поэтому безопасное соединение используется и на MQTT-сервере.

это моя среда.ts

MQTTCONFIG: {
    broker: 'theBroker',
    hostname: 'theHostname',
    **protocol: 'wss'**,
    port: thePort,
    username: 'theUsername',
    password: 'thePassword',
    path: 'thePath',
    topic_query: 'theTopicQuery',
    topic_update_state: 'theTopicUpdateState',
    clientID: 'smartorder'
  }

, а это мой app.module.ts (некоторые объявления и импортопущены):

import { MqttMessage, MqttModule, MqttServiceOptions } from 'ngx-mqtt';
.
.
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    BrowserAnimationsModule,
    AppRoutingModule,
    MaterialModule,
    LayoutModule,
    MqttModule.forRoot(environment.MQTTCONFIG)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Я получаю следующую ошибку:

ERROR in src/app/app.module.ts(62,24): error TS2345: Argument of type '{ broker: string; hostname: string; protocol: string; port: number; username: string; password: string; path: string; topic_query: string; topic_update_state: string; clientID: string; }' is not assignable to parameter of type 'IMqttServiceOptions'.
  Types of property 'protocol' are incompatible.
    Type 'string' is not assignable to type '"wss" | "ws"'.

Строка 62: MqttModule.forRoot (environment.MQTTCONFIG)

Свойствопротокол в параметрах MQTT установлен на 'wss': протокол: 'wss'

Как я могу исправить эту ошибку?

1 Ответ

0 голосов
/ 28 июня 2019

Используемая вами библиотека ngx-mqtt принимает перечисление для протокола. К сожалению, вы не можете установить значения перечисления в вашем environment.ts без ввода.

простой обходной путь: исключите значение протокола из environment.ts и установите его прямо в вашем app.module.ts, например так:

// environment.ts
MQTTCONFIG: {
    broker: 'theBroker',
    hostname: 'theHostname',
    port: thePort,
    username: 'theUsername',
    password: 'thePassword',
    path: 'thePath',
    topic_query: 'theTopicQuery',
    topic_update_state: 'theTopicUpdateState',
    clientID: 'smartorder'
}

и

// app.module.ts
export const MQTT_SERVICE_OPTIONS: IMqttServiceOptions = {
    broker: environment.MQTTCONFIG.broker,
    connectOnCreate: true,
    hostname: environment.MQTTCONFIG.hostname,
    port: environment.MQTTCONFIG.port,
    path: environment.MQTTCONFIG.path,
    username: environment.MQTTCONFIG.username,
    password: environment.MQTTCONFIG.password,
    topic_query: environment.MQTTCONFIG.topic_query,
    topic_update_state: environment.MQTTCONFIG.topic_update_state,
    clientID: environment.MQTTCONFIG.clientID,
    protocol: 'wss'
};

Если вы действительно хотите использовать протокол из вашего environment.ts, то установите connectOnCreate: false, загрузите протокол изнутри контроллера вашего приложения после сборки , когда у вас будут доступны отсутствующие наборы, и затем подключитесь к брокер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...