使用pnpm10初始化Electron项目提示Electron uninstall

最近正好有些需求,需要使用Electron来开发客户端。因为最近一直在用tauri,我把我这的默认包管理换成了pnpm。

所以就顺手使用pnpm来初始化Electron项目。

然后我运行项目时,提示我 Electron uninstall。

提示我 Electron uninstall 错误提示我 Electron uninstall 错误

我检查了下package.json,并重新安装下也不行。

当我再次使用 pnpm i 安装依赖时,我看到这句话。

pnpm 提示信息pnpm 提示信息

ok,尝试输入 pnpm approve-builds 并执行,会提示选择需要编译的依赖,用空格键选中,在输入 yes 确认即可。

pnpm 开始编译依赖pnpm 开始编译依赖

pnpm 会在 package.json 文件中添加onlyBuiltDependencies 配置节

pnpm 添加的配置pnpm 添加的配置

好的,问题解决了。


那么,为什么会导致这个问题发生呢?

原因是从pnpm10开始,为了安全默认在安装依赖时不运行相关build脚本。

而Electron在安装时需要运行脚本来构建二进制文件。

pnpm approve-builds 授权构建脚本pnpm approve-builds 授权构建脚本

这时候需要手动授权下运行构建脚本。

Brave在中文环境下编译报错

最近,突然接触到Brave这个浏览器,正好有研究源码的需求。就尝试在本地编译一个。

但是在编译过程中抛出报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 506: invalid continuation byte

提示在python3\bin\Lib\subprocess.py 文件中1016行的问题。

报错位置报错位置

结合报错信息估计编码问题。尝试使用set PYTHONUTF8=1环境变量解决问题。

但是,仔细阅读报错发现是无法解码为UTF-8,估计和Windows中文系统默认编码GB2312有关。

又因为报错位置在python自带的子进程库中,所以排查到调用位置D:\brave\src\testing\scripts\common.py的69行,添加encoding='gb2312'

添加<code>encoding='gb2312'</code>添加encoding='gb2312'

问题解决~

一切正常一切正常

Windows 生成的p12证书,Mac提示密码错误

上篇文章说到使用客户端证书认证访问网站,但是使用证书需要安装。

但是我发现在Windows上生成的p12证书在MacOS上一直提示密码错误。

怀疑是生成时的加密算法的问题,这里记录下如何转换证书在MacOS上正常使用。

导入证书到系统

记得勾选可以导出私钥

记得勾选可以导出私钥记得勾选可以导出私钥

导出证书

设置中搜索证书管理器,因为刚才的证书安装到个人区域,所以我们这里选择 管理用户证书

Nginx 配置客户端证书认证

最近,有个内部服务需要使用公网上,担心被暴力刷API破解。

正好看到有个双向证书认证的方案,挺符合需求,踩了不少坑,简单记录下

生成证书

info:仅需要生成自签名客户端证书即可,服务端证书就用免费的在线申请的即可,不会有信任问题

可以参考微软官方文档:

生成自签名客户端证书

这里我就用openssl,来生成客户端证书

微信小程序 Canvas 在IOS下,导致无法滑动、页面卡死

最近在写一个活动小程序,其中有一个抽奖组件,测试的时候发现Canvas在Ios下的渲染问题。

如果用户使用苹果设备,按住Canvas绘制区域时滑动页面,会导致页面卡死,只有重启小程序才能恢复。

但是Android用户却没有任何问题。


初步排查

初步排查怀疑是Canvas这种原生组件在绘制的时候出现了问题导致的。

但是查询微信官方文档论坛,发现有人遇到了同样的问题。

原生组件渲染问题的官方回复,后续版本修复原生组件渲染问题的官方回复,后续版本修复

但是这篇提问是在19年5月份发的,微信官方就是10月实现了原生组件同层渲染,来解决这个问题。我检查了下基础库版本,是2.21.2,远超过要求。