【Electron-Vue】构建桌面应用(41)- Can‘t locate Mac/Finder/DSStore.pm in @INC
背景介绍
前面的一些文章讲到了,支持window,Linux,macOS
系统,同时需要用一份代码去兼容三种系统,以便在git托管代码的时候比较方便,所以就搞了一下代码兼容的问题.
在开发过程中,无非是使用process.plateform
来区分不同的操作系统,然后根据不同的系统设置不同的配置,比如windows 的托盘菜单menu
和macos的程序坞
中的配置都是不一样的.其他的倒是差别不大,因为渲染进程用的是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",
最后执行编译命令,便可以成功了.