我們?cè)贓lectron中可能會(huì)調(diào)用一些外部程序烁兰,比如extraResources中的ffmpeg等插件徊都,在windows上沪斟,使用exec或是spawn基本不會(huì)有什么問題,但是到了mac上就會(huì)麻煩很多主之,蘋果會(huì)人為的設(shè)置門檻不讓你運(yùn)行逮刨。以下是我遇到的幾種情況校摩,記錄下解決方案败晴。
最常見的是系統(tǒng)直接彈框提示無法運(yùn)行
此時(shí)前往系統(tǒng)偏好設(shè)置 -> 隱私與安全性 -> 安全性下方,會(huì)提示“已阻止使用XXX” -> 點(diǎn)擊“仍然允許”
然后重新運(yùn)行你的程序所森,此時(shí)又會(huì)彈出來一個(gè)框說不安全,直接允許運(yùn)行即可夯接。
EACCES(Permission denied)
文件沒有運(yùn)行權(quán)限焕济,這里直接賦予文件最高權(quán)限,-R表示遞歸調(diào)用子文件夾晴弃,所以/path/to/folder直接填你的項(xiàng)目文件夾就行,不用找到具體的文件
chmod -R 777 /path/to/folder
ENOENT (no such file or directory)
通常是你調(diào)用插件時(shí)候的路徑錯(cuò)了逊拍,請(qǐng)仔細(xì)檢查你執(zhí)行的路徑,并且最好用path.resolve一下把路徑統(tǒng)一芯丧。如果帶空格那么記得加上引號(hào)芍阎。
EPERM(operation not permitted)
文件沒有調(diào)用的權(quán)限注整。需要3步來處理:
- 首先要確保文件有777權(quán)限(和EACCES一樣處理):
chmod -R 777 /path/to/folder
- 系統(tǒng)偏好設(shè)置 -> 隱私與安全性 -> 完全磁盤訪問權(quán)限 -> 終端 -> 打開
- 對(duì)文件夾遞歸調(diào)用能曾,刪除 macOS 文件上的擴(kuò)展屬性中的 com.apple.quarantine 標(biāo)簽肿轨。這是一個(gè)用來標(biāo)記文件來源的擴(kuò)展屬性寿冕。當(dāng)你從互聯(lián)網(wǎng)下載文件或者從其他來源獲取文件時(shí),系統(tǒng)會(huì)給這些文件打上 quarantine 標(biāo)簽驼唱,作為一種安全機(jī)制。這個(gè)標(biāo)簽會(huì)提示用戶文件的來源驹暑,并在首次打開該文件時(shí)發(fā)出警告,提醒用戶該文件是從互聯(lián)網(wǎng)或其他來源下載的优俘。
find /path/to/folder -type f -exec xattr -d com.apple.quarantine {} \;
這個(gè)命令的含義是:
find /path/to/your/folder -type f: 在指定路徑下找到所有的文件(包括子目錄中的文件)京办。
-exec xattr -d com.apple.quarantine {} ;: 對(duì)于每個(gè)找到的文件帆焕,執(zhí)行 xattr -d com.apple.quarantine 命令來移除 quarantine 屬性惭婿。