EventSource не работает в angular 6 из-за модуля http и https - PullRequest
0 голосов
/ 16 сентября 2018

Я использую EventSource в своем проекте angular 6.Когда я пытаюсь запустить свой проект с использованием ng serve, я получаю следующую ошибку:

ОШИБКА в ./node_modules/eventsource/lib/eventsource.js Модуль не найден: Ошибка: не удается разрешить'http' в '$ {MY_PATH} / node_modules / eventsource / lib'

Эта ошибка выглядит так же для модуля ' https '.Я пытался использовать HttpClientModule вместо HttpModule, но это не сработало.Я также попытался установить EventSource явно, запустив npm install eventsource, но проблема все еще существует.

Код, который я использую:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import * as EventSource from 'eventsource';

@Injectable({
  providedIn: 'root'
})
export class MyService {
    private eventSource: EventSource;

    constructor(private http: HttpClient) {
        this.eventSource = new EventSource('/subscribe');
        this.eventSource.reconnectInterval = 1;
    }

    // Rest of the code omitted for clarity
}

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Мне удалось решить проблему с помощью этого источника событий , который кажется совместимым с angular. Для этого запустите npm install ng-event-source. Затем в коде используйте объект EventSourcePolyfill вместо EventSource:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { EventSourcePolyfill } from 'ng-event-source';

@Injectable({
  providedIn: 'root'
})
export class MyService {
    private eventSource: EventSourcePolyfill;

    constructor(private http: HttpClient) {
        this.eventSource = new EventSourcePolyfill('/subscribe', { heartbeatTimeout: 1000, connectionTimeout: 1000 });
    }

    // Rest of the code omitted for clarity
}
0 голосов
/ 07 декабря 2018

Попробуйте удалить импорт

import * as EventSource from 'eventsource';
0 голосов
/ 16 сентября 2018

Я не знаю этот пакет, но похоже, что он не имеет ничего общего с Angular или Angular http модулем.Вы прочитали раздел браузера * polyfill в документации?https://www.npmjs.com/package/eventsource

Я думаю, что этот пакет создан для NodeJ, но вы можете использовать его на стороне браузера, но вам нужно добавить несколько дополнительных файлов

...