Angular2サービス内でJS関数を使用しようとしていますが、requireを取得しようとするのがコンソール内の関数ではありません。私は外部のJSファイルをどのように組み込むか分かりません。それはそれを使用するサービスと同じディレクトリレベルにあります。Angular 2アプリでJavaScript関数を使用
- 私はdeclare文が正当だと信じています。本当ですか?
- 無効なrequireステートメントの処理方法がわかりません。それは
エラーが発生し
サービスファイル "を必要機能ではありません":thaat 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);
外部JSファイルは、リモートAPI呼び出しを行う:同じでalchemyapi.js(ディレクトリレベル)
nodejの 'fs'がブラウザで動作することは確かですか? HTTPの定義も異なっているので、 'import * from '' http''を実行できます。コードをリファクタリングする必要があるかもしれません。 – Gary