我目前将HorizonIO导入我的角度2项目的方式如下:
var horizon = require('@horizon/client');
@Injectable()
export class DbService {
private horizon;
constructor() {
this.horizon = Horizon({host: 'localhost:8181'});
}
}
现在我不觉得这是正确的方式,因为我应该能够
import { Horizon } from '@horizon/client';
虽然它没有抛出错误,但该变量不可用。
思想/评论
答案 0 :(得分:2)
ES6导入相当于
var Horizon = require('@horizon/client');
是
import * as Horizon from '@horizon/client';
你所做的相当于
var Horizon = require('@horizon/client').Horizon;
编辑:
我现在使用以下代码进行地平线注射:
import { Injectable } from '@angular/core';
import * as Hz from '@horizon/client';
@Injectable()
export class Horizon extends Function {
private _hz;
constructor() {
super('...args', 'return this._hz(...args)');
this._hz = new Hz({host: 'localhost:8181'});
return this.bind(this);
}
}
然后可以像直接导入它一样注入和调用它:
constructor(hz: Horizon){
hz('messages').watch().subscribe(...);
}
不确定这是否比直接导入Horizon有任何好处,但使用DI感觉更有棱角。
答案 1 :(得分:0)
检查@horizon/client
文件夹中是否有node_modules
,如果不是:请尝试npm install
(https://www.npmjs.com/package/@horizon/client)。