Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

electron 使用webpack打包的问题。

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')。

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...