Javascript 如何在typescript中加载电子模块

Javascript 如何在typescript中加载电子模块,javascript,node.js,typescript,ipc,electron,Javascript,Node.js,Typescript,Ipc,Electron,我试图在typescript中从electron获取ipcRenderer模块,以将当前组件的信息发送到核心,并将信息返回到窗口(electron chromium浏览器)。 通过将ts代码转换到ES5,我得到的只是一个错误“找不到模块” 常数ipc=要求('electron')。ipc渲染器` 更新:错误是在“未找到模块”和此模块之间切换: ../~/electron/index.js中的错误 模块生成失败:错误:enoint,打开“/…/node\u modules/electron/ind

我试图在typescript中从electron获取ipcRenderer模块,以将当前组件的信息发送到核心,并将信息返回到窗口(electron chromium浏览器)。 通过将ts代码转换到ES5,我得到的只是一个错误“找不到模块”

常数ipc=要求('electron')。ipc渲染器`

更新:错误是在“未找到模块”和此模块之间切换:

../~/electron/index.js中的
错误
模块生成失败:错误:enoint,打开“/…/node\u modules/electron/index.js”
@./app/components/search/search.ts 12:10-29

那是从现在开始的。我还尝试使用typescript的导入语法,但结果是一样的

然后我尝试在ES5文件中使用electron.ipcrender模块,直接在html文件中加载/链接

它在那里起作用了。为什么?

然后我尝试在ES5文件中使用electron.ipcrender模块,直接在html文件中加载/链接


如果它在html中工作,但在ts中失败,则表示错误不在
const ipc=require('electron').ipcrender中。该错误最有可能发生在导入时,您必须从html加载文件(而不是
require('electron')
)。

在搜索10小时后解决了该问题。 问题是网页包转码器


由于浏览器应用程序中的电子依赖项不是真实的,这意味着它不是从node_模块中进行网页打包的,而是在运行时加载的,因此require语句导致了一些错误,例如我找不到“fs”

但是,您可以使用以下方法欺骗typescript:


如果(窗口类型['require']!=“未定义”){
设electron=window['require'](“electron”);
设ipcRenderer=electron.ipcRenderer;
log(“ipc渲染器”,ipc渲染器);
}


另外,如果您正在编写一个web应用程序,它只有在内部运行时才由electron增强,这是一种更好的方法,因为您不必仅在使用通信部件时将electron作为依赖项添加到web应用程序中。

这为我解决了问题:

您可以修复它,只需添加到“package.json”


来源:

你可以用这个欺骗ts(肮脏的黑客,但它有效):


const{ipcRenderer}=(窗口如有)。要求(“电子”)

您是否尝试过使用支持TS和ES6等功能的electron编译模块?另一个问答解决了我的问题:您能再解释一下您是如何修复它的吗?:)在我的例子中,我使用webpack将typescript代码转换为es5,这样我就有了一个
webpack.config.js
-文件。在该配置中,必须通过
webpackettargetelectronrenderer(config)
将孔配置发送到
config.target
。它应该是这样的:
var-config={….};config.target=WebPackageTargetElectronRenderer(配置);module.exports=config谢谢,这不是明显的文档不足。我已经找了好几个小时了。我觉得可能有一个更优雅的解决方案,但这让我再次行动起来。
"browser": {
"fs": false,
"path": false,
"os": false }