在 angular2 组件中需要节点模块

Require node module in angular2 component

我不知道如何在我的 angular2 组件中需要节点模块 - 特别是在我如何在 angular2 组件中打开一个新电子 window 的情况下。

我的component.html有这样的东西

<button class="btn btn-success" (click)="buttonLoginClick()">Login</button>

并且在 component.ts 中我使用以下内容

export class LoginComponent  {
  constructor() {}

  buttonLoginClick(): void {
    alert("just a test");

    const remote = require('electron').remote;
    const BrowserWindow = remote.BrowserWindow;

    var win = new BrowserWindow({ width: 800, height: 600 });
    win.loadURL('./test.html');
  }
}

编译时的错误是

Cannot find name 'require'.

我知道这个问题是两个多月前提出的。但是,由于某些关键字在 Google 上的排名相当高。我将解释我是如何让它工作的...

选项 1

在您的 index.htm 文件中,在 head 元素内添加以下块

<script>
    var electron = require('electron');
</script>

然后你可以在任何 Typescript 文件中声明 electron 变量,例如,一个组件...

import { Component } from "@angular/core";

declare var electron: any;

@Component({
    ...
})
export class FooComponent {
    bar() {
        var win = new electron.remote.BrowserWindow({ width: 800, height: 600 });
        win.loadURL('https://google.com.au');
    }
}

当您调用该函数时,它会打开一个指向 google

的电子 window

选项 2

这个选项应该更简洁一些。如果你有一个 src\typings.d.ts 文件。然后你可以简单地告诉打字稿编译器注册 require 全局函数...

declare var require: any;

然后您可以像往常一样使用require函数