electron 使用webpack打包的问题。

发布于 2022-09-04 19:44:30 字数 634 浏览 10 评论 0

electron 使用webpack打包遇到一个问题。
本来如果你的网页单纯运行在electron里面是没有问题的。配置文件里面加上这个就行

target: 'electron-renderer',

但是现在的问题就是,我的网页,想通过浏览器
http://127.0.0.1:8088/index.html 这样的形式也能访问。

所以,现在就是,一个网页,既可以运行在electron里面,也要能运行在外部的浏览器里面。

但是这个target: 'electron-renderer',要么就是electron-renderer,要么就是web。也就是只能一套。

我现在的方式就是,打包两套js。然后用js判断是electron的话,html加载一套js,如果是外部浏览器的话,加载另外一套js。
这样做是有点蛋疼。

但是如果你设置 target: 'web',

只要你的js里面有下面这个
require('electron')
那么打包就提示报错。也就是你所有的js代码都不能有require('electron')。

不知道如何解决这个问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

似梦非梦 2022-09-11 19:44:30

eletron中会用到node的模块,比如fs模块,直接读写文件
另一方面,electron有main进程render进程,main进程就是使用node启动一个浏览器,而render就是浏览器中的那个网页。
网页有时候需要和主进程通信,ipc模块就是用于两个进程间的通信。
require('electron')也属于这部分
顺便,electron模块用到了fs模块。

如果以网页的形式访问,以上两个部分都用不到,当然会报错,这只是其一。
其二,网页在浏览器中的时候,禁止自动读写文件,这是浏览器规范+web安全所限。electron读取文件也是因为与主进程通信实现的。

扯了这么多,简单说就是,除非你全都不用electron模块,否则,没门。

蓝礼 2022-09-11 19:44:30

经过我的一番探索,可以这样:
所有主要代码用web打包,涉及到本地调用的,专门弄一个webpack配置,打包成target: 'electron-renderer',这部分导出一个对象,比如window.electron,然后在网页代码中如果想调用node模块,就通过这个对象转发。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文