Angular2 서비스에서 JS 함수를 사용하려고하지만 require를 얻는 것이 콘솔의 함수가 아닙니다. 외부 JS 파일을 포함하는 방법을 잘 모르겠습니다. 그것은 그것을 사용하는 서비스와 동일한 디렉토리 레벨에 있습니다.Angular 2 앱의 JavaScript 함수 사용
- 나는 선언문이 합법적이라고 믿습니다. 참된?
- 잘못된 require 문을 처리하는 방법을 모르겠습니다. 그것은 "함수 필요하지 않습니다"
서비스 파일
오류가 발생합니다 : analytics.service.ts를
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
//how I thought i was supposed to make the JS function available
declare var AlchemyAPI: any;
@Injectable()
export class AnalyticsService {
constructor (private http: Http) {}
getResponse() {
//not sure how to handle this require. I know that its not allowed
though
var AlchemyAPI = require('./alchemyapi');
//instance of external JS file function
var alchemyapi = new AlchemyAPI();
var myText = "Whoa, AlchemyAPI's Node.js SDK is really great, I can't
wait to build my app!";
return this.http.get(alchemyapi.sentiment("text", myText, {}))
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
console.log(body);
return body.data || { };
}
private handleError (error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server
error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
원격 API 호출하게 thaat
외부 JS 파일 : alchemyapi.js (같은시를 디렉토리 레벨)
nodej의 'fs'가 브라우저에서 작동 할 확신합니까? HTTP 정의도 다르므로'http * '에서'import *'할 수 있습니다. 코드를 리팩터링해야 할 수도 있습니다. – Gary