2017-03-13 3 views
2

angular2-cli 프로젝트에 PubNub를 추가하고 싶습니다. 문제는 연결에 있습니다. 그러나 npmjs.com의 pubnub-angular2 패키지의 지침을 따랐습니다.angular2 cli 프로젝트에 pubnub 추가

예외 :

내가 브라우저에서로드하려고하면 오류 메시지가 이것이다 PubNub는 전역 범위에 있지 않습니다. 라이브러리가 각 어댑터 app.module.ts에서

전에 포함되는 pubnub.js의 V4를 확인, 나는 다음과 같은 한 다음에

import {BrowserModule} from '@angular/platform-browser'; 
 
import {NgModule} from '@angular/core'; 
 
import {FormsModule} from '@angular/forms'; 
 
import {HttpModule} from '@angular/http'; 
 

 
import {PubNubAngular} from 'pubnub-angular2'; 
 
import {AppComponent} from './app.component'; 
 

 
@NgModule({ 
 
    declarations: [ 
 
     AppComponent 
 
    ], 
 
    imports: [ 
 
     BrowserModule, 
 
     FormsModule, 
 
     HttpModule 
 
    ], 
 
    providers: [PubNubAngular], 
 
    bootstrap: [AppComponent] 
 
}) 
 

 
export class AppModule {}

app.component.ts, 다음 코드가 있습니다.

import {Component, Injectable, Class} from '@angular/core'; 
 
import {PubNubAngular} from "pubnub-angular2"; 
 

 
@Component({ 
 
    selector: 'app-root', 
 
    templateUrl: './app.component.html', 
 
    styleUrls: ['./app.component.css'] 
 
}) 
 

 
export class AppComponent { 
 

 
    title = 'Pubnub Chat Service'; 
 
    private channel = 'chat-demo-app'; 
 

 
    constructor(private pubnubService: PubNubAngular) { 
 
     pubnubService.init({ 
 
      publishKey: 'pub-c-***', 
 
      subscribeKey: 'sub-c-***' 
 
     }); 
 
    } 
 

 
    sendMessage(message: string): void { 
 
     this.pubnubService.publish({ 
 
      channel: this.channel, 
 
      message: message 
 
     }); 
 
    } 
 

 
}
나는 AppComponent에서 가져 오기를 제거하면, 구성 요소가 PubNubAngular 제공자가 표시되지 않습니다는

참고.

미리 감사드립니다. 나는 당신이를 추가해야합니다, 당신은 가능성이 누락 될 수있는 유일한 것은 당신의 index.html을 필요 스크립트 태그입니다 코드에서 무엇을 말할 수에서

+1

나는이 라이브러리를 사용한 적이 있지만, 오류, 당신은 중앙 도서관 있었으나 결국 각 어댑터를 가져 didin't 매우 간단 보인다. vendor.ts에'import "myLibrary"와 같은 라이브러리를 포함하거나 index.html에 추가해야합니다. 그것을 사용하는 컴포넌트/서비스에서'pubnub-angular2'를 가져 오기 전에. – n00dl3

+0

네, 정말 솔직합니다. 그러나 해결책은 나에게 그렇게 사소하지 않다. vendor.ts는 변경할 수없는 제 3 자 라이브러리입니다. 브라우저가 index.html에서 node_modules 디렉토리를 참조 할 때 아무것도 찾을 수없는 반면 (노드 모듈은 src와 동일한 수준에 있으며 index.html은 src 폴더). –

답변

2

... 여기

<script src="node_modules/pubnub/dist/web/pubnub-angular2.js"></script> 

가 plunker입니다 pudnub이 적절히 삽입되었습니다.

plunker

편집

어떤 ...

  1. NPM은 NPM이 pubnub에게

  2. NPM을 설치 설치 설치 건너 didnt가 보장하는 모든 단계 pubnub-angular2

  3. 가 index.html을에 스크립트를 포함 (pubnub 서비스 import { PubNubAngular } from 'pubnub-angular2';

    를 사용하여 모든 구성 요소에 providers: [ PubNubAngular ]

  4. 가져 오기를 app.module하는 공급자를 추가

  5. 가져 오기가 import { PubNubAngular } from 'pubnub-angular2';

  6. 을 app.module하는 스크립트 위 참조

앵귤러 - 클리 EDIT

색인에서 <script> 태그를 제거하십시오.HTML과 같은 당신의 angular-cli.json 파일에 추가 ...

"scripts": ["../node_modules/pubnub/dist/web/pubnub.js", "./node_modules/pubnub-angular2/dist/pubnub-angular2.js" ],

+0

감사합니다. pubnub-angular2를 설치 한 후, 경로는 여러분이 인용 한 또 다른 경로입니다 :''. 한 수준의 node_modules을 가지고 있기 때문에 "../"로 시작하려고했습니다. 두 경우 모두 404 오류가 발생합니다. –

+0

@HorvathAdam이'node_modules' 폴더로 이동하면'pubnub-angular2'가 보입니까? – Bean0341

+0

@HorvathAdam 또한 실제로는 '