如何在打字稿中加载电子模块

我尝试从打字稿中的电子获得ipcRenderer模块,将信息从当前组件发送到核心,并将信息返回窗口(电子铬浏览器)。 我得到的是通过将ts代码转码为ES5而出现“模块未find”的错误。

const ipc = require('electron')。ipcRenderer;`

更新:错误是在“找不到模块”和这个之间切换:

ERROR in ./~/electron/index.js Module build failed: Error: ENOENT, open '/.../node_modules/electron/index.js' @ ./app/components/search/search.ts 12:10-29

这是从现在的电子api 。 我也尝试使用打字机的input语法,但结果是一样的。

比我试图在ES5文件中使用electron.ipcRenderer模块,直接在html文件中加载/链接。

那里工作。 为什么?

由于浏览器应用程序中的电子依赖不是真实的,这意味着它不是从node_modules进行webpacked,而是在运行时加载,require语句导致错误,例如“fs”找不到。

但是,你可以用这个欺骗打字稿:

if (typeof window['require'] !== "undefined") { let electron = window['require']("electron"); let ipcRenderer = electron.ipcRenderer; console.log("ipc renderer", ipcRenderer); }

另外,如果您正在编写一个网页应用程序,而这个应用程序只在内部运行时被电子增加,这是一个更好的方法,因为您不必在使用通信部分时将电子作为依赖添加到您的web应用程序中。

比我试图在ES5文件中使用electron.ipcRenderer模块,直接在html文件中加载/链接。

如果它在html中工作,但是在ts中失败,则意味着错误不在const ipc = require('electron').ipcRenderer; 。 该错误是最喜欢的,你必须从HTML(而不是require('electron') )加载文件的导入。