require引入本地视频导致electron白屏问题,解决过程

11 篇文章 0 订阅

仅供参考,以下内容为笔者解决问题的过程记录
技术栈:electron、react、nodeJs
需要实现的功能:存储聊天记录中的图片、视频到本地;当用户点击时,展示大图or播放视频

每次存储本地文件后,代码都会重新编译加载一次。
如果真是写入文件的方式有问题,那为什么之前发送图片的时候是好好的呢?
三个写入方式都没有问题,关键是看写入的内容,倘若是hello.txt那就没事,若是buffer格式就不行,就会导致重新编译。
stream.write写hello.txt也不行=》stream写入方式不行,尤其是开关流瞬间会重新编译。》重新编译,但应用不会白屏崩溃。即使真放在第一次存储代码块中运行,也不会导致白屏。
难道说,write(unit8array)就会白屏吗?果然是这样
为什么会这样呢?图片100kb太大了吗?
1、可能是buffer、unit8array格式不行
2、图片太大了,动辄最少几十kb

:哇哦!BEGIN THINK TOWARDS REAL REASON
即便是在he.txt中手动添加一个字,也会重新编译。用流写入也是这样吗?
为什么我即便是剪切一下也会重新编译呢?
难道说因为因为自己引用了这个路径,所以这个路径下东西稍微有变动,我就重新编译???
答:没错,因为用了require关键字,引入了路径,所以该路径下有变动,相当于源代码该变了,就会重新编译文件。
真的是相当于源代码改变了吗?源代码改变一般程序会返回到登录页面,我们试一试?
:新建或删除一个图片会导致页面刷新。但如果只是加了一个文字,虽然terminal也重新编译,但不会导致页面刷新。
难道是因为一个字所占字节数太小???
:不是的,只是增删字数,并不会触发页面刷新。看来,只有新建文件时,才会页面刷新。
:也可以理解,require关键字就像import一样,凡是被导入的依赖,都会作为源代码的一部分,所以这种行为是可以理解的。
写入图片为什么就不会导致崩溃?
:手动确实也会崩溃,但是好像真正发送图片的时候就不会崩溃?
:真正发送图片也会导致崩溃。
总结:使用require,使得视频存储文件夹路径,被当做第三方js库一样被引入进来,所以每次缓存新的视频到本地时,相当于第三方库代码改变了,因为热部署的缘故,代码被重新编译,所以屏幕出现了白屏!exactly

历时一个月多,当然也没有一直被这个问题卡着,我先跳过这个问题,过了几天再思考,失败,然后再次跳过…,这样反复几次后,终于现在柳暗花明了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

建筑安全转Java-张无忌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值