webpack - 使用电子 ipc 时停止的电子锻造符合渲染器代码
问题描述
我正在创建一个新的电子应用程序,但我遇到了一个我从未遇到过的问题
我使用import {ipcRenderer} from 'electron'
并使用过ipcRenderer.send
,它在编译渲染器代码时显示此错误。
在最新的电子和电子锻造中,导入电子并在任何渲染器代码中使用它都会导致错误并终止
我在electron中使用React,我之前的项目也使用了React+Electron,但是使用electron模块是可以的。
我能做的所有事情都不起作用,包括降级电子包。
完整日志:
yarn run v1.22.10
$ electron-forge start
√ Checking your system
√ Locating Application
√ Preparing native dependencies
√ Compiling Main Process Code
√ Launch Dev Servers
√ Compiling Preload Scripts
√ Launching Application
Webpack Output Available: http://localhost:9000
\ Compiling Renderer Code
An unhandled rejection has occurred inside Forge:
[Error: EISDIR: illegal operation on a directory, read] {
errno: -4068,
code: 'EISDIR',
syscall: 'read'
}
Electron Forge was terminated. Location:
{}
error Command failed with exit code 1.
我尝试重新安装所有软件包,但它不起作用。为什么以及如何解决?即使我在target: 'node'
webpack.renderer.config.json 中添加了一个,哦窗口终于可以显示了,但是 ipcRender 不能发送消息
Uncaught TypeError: Cannot read property 'send' of undefined
at onClick (TitleBar.tsx?3219:11)
at HTMLUnknownElement.callCallback (react-dom.development.js?6ac8:3945)
at Object.invokeGuardedCallbackDev (react-dom.development.js?6ac8:3994)
at invokeGuardedCallback (react-dom.development.js?6ac8:4056)
at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js?6ac8:4070)
at executeDispatch (react-dom.development.js?6ac8:8243)
at processDispatchQueueItemsInOrder (react-dom.development.js?6ac8:8275)
at processDispatchQueue (react-dom.development.js?6ac8:8288)
at dispatchEventsForPlugins (react-dom.development.js?6ac8:8299)
at eval (react-dom.development.js?6ac8:8508)
为什么????
解决方案
tl;博士
让 webpack 明白 electron 应该使用require
直接导入。
解决方案
这是一个 webpack 问题。
Webpack 会将所有使用过的包打包成 bundle。因为 electron 是一个超酷的包,webpack不能把它做成 bundle。
像这样配置使 electron 成为 commonjs2 模块,使语句 fromimport electron from 'electron
直接require('electron')
从 electron 中获取项目。
// webpack.renderer.config.js
module.exports = {
externals: {
electron: 'commonjs2 electron',
},
}
推荐阅读
- node.js - 将 Node 应用程序从开发打包到生产
- sql - 从雪花中卸载 CSV,其中只有非空值用引号括起来
- php - 拒绝除 php 文件 .htaccess 之外的所有流量
- r - 如何从 R 中大小增加的数据集中随机抽取样本?
- javascript - Docker:为什么从 .env 传递的变量即使在从 .env 中删除并重建后仍会留在容器中
- java - 是否可以将 Xamarin.forms 代码作为库添加到现有的本机 Android Studio 应用程序?
- node.js - 无法返回 JWT 令牌
- git - 如何使用令牌将图像推/拉到私有存储库
- node.js - 如何在节点中按顺序从循环中返回数据
- wordpress - 帐户登录页面上的 Woocommerce 移动通知