由于模块http和https,EventSource无法在角度6中工作

时间:2018-09-16 08:53:35

标签: angular eventsource

我在我的angular 6项目中使用了EventSource。当我尝试使用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 :(得分:0)

我真的不知道这个软件包,但是看起来它与Angular或Angular http模块无关。您是否已阅读文档中的浏览器polyfill 部分? https://www.npmjs.com/package/eventsource

我认为这个软件包是为NodeJ创建的,但是您可以在浏览器端使用它,但是您需要添加一些额外的文件

答案 1 :(得分:0)

我设法通过使用似乎与angular兼容的event source解决了这个问题。为此,请运行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
}

答案 2 :(得分:0)

尝试删除导入

import * as EventSource from 'eventsource';