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')。
不知道如何解决这个问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
eletron中会用到node的模块,比如fs模块,直接读写文件
另一方面,electron有main进程render进程,main进程就是使用node启动一个浏览器,而render就是浏览器中的那个网页。
网页有时候需要和主进程通信,ipc模块就是用于两个进程间的通信。
require('electron')也属于这部分
顺便,electron模块用到了fs模块。
如果以网页的形式访问,以上两个部分都用不到,当然会报错,这只是其一。
其二,网页在浏览器中的时候,禁止自动读写文件,这是浏览器规范+web安全所限。electron读取文件也是因为与主进程通信实现的。
扯了这么多,简单说就是,除非你全都不用electron模块,否则,没门。
经过我的一番探索,可以这样:
所有主要代码用web打包,涉及到本地调用的,专门弄一个webpack配置,打包成target: 'electron-renderer',这部分导出一个对象,比如window.electron,然后在网页代码中如果想调用node模块,就通过这个对象转发。