【Electron-Vue】构建桌面应用(41)- Can‘t locate Mac/Finder/DSStore.pm in @INC

背景介绍

前面的一些文章讲到了,支持window,Linux,macOS系统,同时需要用一份代码去兼容三种系统,以便在git托管代码的时候比较方便,所以就搞了一下代码兼容的问题.

在开发过程中,无非是使用process.plateform来区分不同的操作系统,然后根据不同的系统设置不同的配置,比如windows 的托盘菜单menumacos的程序坞中的配置都是不一样的.其他的倒是差别不大,因为渲染进程用的是vue所以差别不大.

将代码移植后,发现出现了一个问题,在执行npm run build的时候,程序编译不过去,提示缺少或不能加载mac的一些模块.错误信息如下:

Error: Exit code: 2. Command failed: /usr/bin/perl /private/var/folders/tj/sjr_3yqn35g72vzjbwt3wcb80000gn/T/t-XweIs5/1-dmgProperties.pl
Can't locate Mac/Finder/DSStore.pm in @INC (you may need to install the Mac::Finder::DSStore module) (@INC contains: /Library/Perl/5.30/darwin-thread-multi-2level /Library/Perl/5.30 /Network/Library/Perl/5.30/darwin-thread-multi-2level /Network/Library/Perl/5.30 /Library/Perl/Updates/5.30.2 /System/Library/Perl/5.30/darwin-thread-multi-2level /System/Library/Perl/5.30 /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level /System/Library/Perl/Extras/5.30) at /private/var/folders/tj/sjr_3yqn35g72vzjbwt3wcb80000gn/T/t-XweIs5/1-dmgProperties.pl line 3.
BEGIN failed--compilation aborted at /private/var/folders/tj/sjr_3yqn35g72vzjbwt3wcb80000gn/T/t-XweIs5/1-dmgProperties.pl line 3.

Can't locate Mac/Finder/DSStore.pm in @INC (you may need to install the Mac::Finder::DSStore module) (@INC contains: /Library/Perl/5.30/darwin-thread-multi-2level /Library/Perl/5.30 /Network/Library/Perl/5.30/darwin-thread-multi-2level /Network/Library/Perl/5.30 /Library/Perl/Updates/5.30.2 /System/Library/Perl/5.30/darwin-thread-multi-2level /System/Library/Perl/5.30 /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level /System/Library/Perl/Extras/5.30) at /private/var/folders/tj/sjr_3yqn35g72vzjbwt3wcb80000gn/T/t-XweIs5/1-dmgProperties.pl line 3.
BEGIN failed--compilation aborted at /private/var/folders/tj/sjr_3yqn35g72vzjbwt3wcb80000gn/T/t-XweIs5/1-dmgProperties.pl line 3.

吧啦吧啦一大堆,主要是缺少了Mac/Finder/DSStore.pm导致的,之前的编译过程并没有出现类似的问题,可能是windows下的代码同步到macOS时出现的.

解决办法

查了一下具体怎么安装,发现这个是electron-builder自带的,而不是系统的,至于它的错误提示信息:you may need to install the Mac::Finder::DSStore module也提示了让你去安装它.

我没有尝试去单独安装,而是通过升级electron-builder来解决这个问题.

目前尝试可以使用的版本为:

"electron-builder": "^22.7.0",

升级后继续执行npm run build就会发现又出了一个错误:

无法识别的选项:platform
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Dynarose@1.0.0 build:mac: `node .electron-vue/build.js && electron-builder --platform=macos`
npm ERR! Exit status 1

原来electron-builder升级后就不支持--plateform=darwin这种方式了,从它给出的提示来看,目前支持的系统为:

Building:
-m, -o, --mac, --macos [数组]
-l, --linux [数组]
-w, --win, --windows [数组]
–x64 [布尔]
–ia32 [布尔]
–armv7l [布尔]
–arm64 [布尔]
–universal [布尔]
–dir [布尔]
–prepackaged, --pd
–projectDir, --project
-c, --config

所以需要将之前的编译命令改一下:

"build:mac": "node .electron-vue/build.js && electron-builder --plateform=darwin",

改为

"build:mac": "node .electron-vue/build.js && electron-builder --macos",

最后执行编译命令,便可以成功了.


版权声明:本文为chenqk_123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>