2016-11-02 2 views
0

노드 스크립트에서 Angular2의 @angular/http 모듈을 재사용하고 싶습니다. 노드 v4.6.0 @angular/http 버전 2.1.2에서 npm을 가져옵니다.노드 스크립트에서 앵귤러 모듈을 재사용하는 방법

이 특별한 경우에는 모듈을 쉽게 분리하고 동작을 확인하며 주변에서 놀 수 있습니다. (즉, 모듈을 호출 할 수 있어야합니다.) . 하지만 노드에 고유 한 브라우저 종속성이없는 앵귤러 모듈을 재사용하는 것에 대한 일반적인 조언을 한 후에도 마찬가지입니다.

myUrl = '...' 
http = require('@angular/http') 
Http = new http.Http() 
Http.get(myUrl).then(result => console.log(result)) 

그리고 가지고 :

TypeError: Cannot read property 'merge' of undefined at mergeOptions (/home/sam/node_modules/@angular/http/bundles/http.umd.js:1578:30) at Http.get (/home/sam/node_modules/@angular/http/bundles/http.umd.js:1672:45) at repl:1:6 at REPLServer.defaultEval (repl.js:262:27) at bound (domain.js:287:14) at REPLServer.runBound [as eval] (domain.js:300:12) at REPLServer. (repl.js:431:12) at emitOne (events.js:82:20) at REPLServer.emit (events.js:169:7) at REPLServer.Interface._onLine (readline.js:212:10)

그래서, 그것은 이루어집니다

내가 찾고 있어요 웹 어플은이 시도 모듈을 사용하는 방법에 떨어져 간다? 할 수 있습니까? 어떻게 Http와 일반적으로 특정한 경우에 그것에 대해 가야합니까?

+0

어떻게 작동합니까? Http는 XHR을 사용하는데 이는 브라우저에만 해당됩니다. Angular Universal의 Http를 이론적으로 사용할 수는 있지만 왜 그런가요? – estus

+0

글쎄, 그게 내가 묻고있는거야. 어떻게 작동하게하는지. – spinkus

+0

왜 내가하고 싶은지 묻지 마십시오. 별로 관련성이 없습니다. – spinkus

답변

1

NG2 (Angular2)에 대해 더 많이 배우고 나면, 일단 배웠다면 분명해 보이는 것을 깨달았습니다. NgModules은 단순히 "모듈"이라는 용어와 같은 간단한 컨테이너가 아닙니다. 그들은 매우 구체적인 책임을 가지고 있으며 NG2 코어와 밀접하게 연결되어 있습니다. 따라서 노드로 가져올 수 없습니다. NG2의 모든 것을 수행하려면 bootstrapped NG2 코어 모듈이 필요합니다. HttpModule에 의해 제공되는 주사 서비스 인 Http에 액세스하는 것은 주사 시스템으로 인해 다시 복잡해집니다.

NG2의 카르마 테스트 프레임 워크와 유틸리티를 사용하여 NG2의 Http 서비스에 다소 고립 된 액세스를 얻을 수있었습니다. 전체 테스트 설정은 복잡하지 않지만 QuickStart 응용 프로그램에서 모두 완료됩니다 (테스트 설정은 테스트를 실행할 수있는 서버 환경에서 부트 스트랩 된 NgModule을 기본적으로 제공합니다). 내가 다시 빠른 시작 응용 프로그램을 제거하고 그 다음 npm test 실행이 같은 간단한 단위 테스트를 추가 : 당신이 역할을하도록 지시하는 구성이다 조정할해야 할 수도 있으므로,이 업보이다

import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 
import { DebugElement } from '@angular/core'; 
import { HttpModule, Headers, Http, Response } from '@angular/http'; 
import { Observable }  from 'rxjs'; 
import 'rxjs/add/operator/toPromise'; 

describe('Test frame for accessing Http!', function() { 
    let http: Http 

    beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     imports: [ HttpModule ] 
    }) 
    .compileComponents(); 
    })); 

    beforeEach(() => { 
     http = TestBed.get(Http); 
    }); 

    it('Test some HTTP',() => { 
    http.get('/base/foo.json').toPromise() 
     .then((r: Response) => console.warn(r)) 
     .catch((e: any) => console.warn('An error occured')) 
    }); 
}); 

서버 지원을 어디에서 무엇이든 ever ..

관련 문제