在离子+电子(5.0.0)桌面应用程序中需要节点模块

时间:2019-04-28 14:33:21

标签: node.js ionic-framework electron ionic4

我正在使用离子和电子构建桌面应用程序。

我开始使用electron v4.1.3,并且能够通过以下方式在应用程序的“离子部分”(例如home.ts文件)中要求节点模块:

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

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {

    ngOnInit () {
        console.log ((<any> window).require ("fs"));
    }
}

这就是我得到的:

Screen of ionic app default home page

如您所见,我可以访问所有fs方法,因此我可以读取,写入,复制文件以及其他任何内容。

现在我已经安装了electron v5.0.0,我创建了相同的应用程序,但是当我尝试在fs方法中要求使用ngOnInit模块时出现错误:

  

window.require不是函数

Screen of ionic app default home page with node module require error

我该如何解决?如果您需要有关安装或环境的更多详细信息,请告诉我,谢谢!

1 个答案:

答案 0 :(得分:2)

现在,根据突破性更改文档,

nodeIntegration现在默认在5.0.0中被禁用。

https://github.com/electron/electron/blob/master/docs/api/breaking-changes.md#planned-breaking-api-changes-50

和发行说明

https://github.com/electron/electron/releases/tag/v5.0.0

因此您需要启用它:

const mainWindow = new BrowserWindow({
    webPreferences: { nodeIntegration: true }
  });