窗口未定义角度通用第三库 [英] window is not defined angular universal third library
本文介绍了窗口未定义角度通用第三库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用ng2-mqtt库,并在我的组件中使用了它,如下所示:
I am working with the library ng2-mqtt and I used it im my component like this:
import 'ng2-mqtt/mqttws31.js';
declare var Paho: any;
现在我遇到以下错误:
ReferenceError: window is not defined
at Object.<anonymous> (/Users/Picchu/Documents/em3/node_modules/ng2-mqtt/mqttws31.js:2143:4)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.require (module.js:483:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/Picchu/Documents/em3/dist/server.js:18707:18)
如何解决此问题?
推荐答案
避免服务器错误的一种可能方法是不呈现使用window
的组件(如果是选项).像这样:
One possible way to avoid server error is not to render the component(if it is an option) that uses window
. Something like:
<ng-container *ngIf="isBrowser">
<!-- mqttws31-component -->
<mqttws31-component></mqttws31-component>
</ng-container>
可以从( ng2 )
import { isBrowser } from 'angular2-universal';
或者,如果 ng4 + ,您也可以在浏览器模块中进行定义:
Or if ng4+, you can also define this in your browser module:
// app.browser
@NgModule({
providers: [
{ provide: 'isBrowser', useValue: true }
]
})
然后从构造函数中注入
export class SomeComponent implements OnInit {
constructor(@Inject('isBrowser') private isBrowser: boolean)
ngOnInit() {
// example usage, this could be anywhere in this Component of course
if (this.isBrowser) {
alert('we're in the browser!');
}
}
这篇关于窗口未定义角度通用第三库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文