问题
刚解决上个
mac上electron项目使用node-7z遇到unknown error
打包后,又一个问题
坑是真的多啊,dev环境解压都是正常的,electron打包后,运行解压发现找不到7z命令,报错:Error: spawn 7z ENOENT
我裂了
分析
找到一个老哥的博客
https://blog.csdn.net/fekang/article/details/87261887
分析过程是 ls 命令在electron上打包可以正常使用,7z 却不可以,使用which 查看两个命令的区别,发现位置不同,ls是在/bin/ls;7z是我们自己安装的,在/usr/local/bin有个替身(mac上的快捷方式,不影响使用)
所以,是不是我们的electron软件运行的时候,不能使用到用户设置的环境变量,只能使用系统级别的?
解决
上面博文的解决方案:把要用的 命令文件在/bin下建立一个软连接,我尝试了一下,遇到了mac 的权限限制 operation not permitted;我不太想修改bin 的文件权限,所以这里就不继续修改了。
换个解决方向,由于我的软件目前只在mac上运行,我直接使用了nodo-7z的$bin
const seven = extractFull('./archive.7z', './output/dir/', {
$bin: '/usr/local/bin/7z'
})
设置为7zip的7z替身位置,打包运行,解压成功