国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

electron開(kāi)發(fā)過(guò)程中遇到的一些坑

FingerLiu / 1731人閱讀

摘要:導(dǎo)致下載流程受阻問(wèn)題中使用到子進(jìn)程的時(shí)候,是把子進(jìn)程當(dāng)作一個(gè)外部依賴來(lái)做的,打包后并不會(huì)將子進(jìn)程的代碼打進(jìn)到包中,需要額外進(jìn)行配置。子進(jìn)程中用的第三方包都需要在中進(jìn)行配置。

在公司開(kāi)發(fā)的下載器過(guò)程中,遇到的一些坑點(diǎn) 1.electron中彈窗的確認(rèn)取消以及系統(tǒng)自帶的叉號(hào)之間的關(guān)系
場(chǎng)景:在用戶退出app時(shí),需要提示用戶是否確認(rèn)退出,此時(shí)彈窗出現(xiàn),如果點(diǎn)擊確認(rèn)就繼續(xù)退出,執(zhí)行回調(diào),否則的話,不退出

問(wèn)題:點(diǎn)擊叉號(hào)的時(shí)候,回調(diào)中返回的值是0,由于代碼中寫(xiě)的buttons順序?yàn)閇"確認(rèn)", "取消"],點(diǎn)擊“確認(rèn)”的時(shí)候?qū)?yīng)的response也是0,就導(dǎo)致了點(diǎn)擊“確認(rèn)”和點(diǎn)擊叉號(hào)的行為一致,這樣的話是不正確的,點(diǎn)擊叉號(hào)應(yīng)該等同于取消退出。

// 問(wèn)題代碼,點(diǎn)擊確認(rèn)按鈕會(huì)退出,點(diǎn)擊右上角叉號(hào)也會(huì)退出
dialog.showMessageBox(mainWindow, { buttons: ["確認(rèn)", "取消"] }, (response) => {      if (reponse === 0) {
    // 執(zhí)行退出操作
  } 
});
// 修改后代碼,點(diǎn)擊確認(rèn)退出,點(diǎn)擊右上角叉號(hào)不退出
dialog.showMessageBox(mainWindow, { buttons: ["取消", "確認(rèn)"] }, (response) => {
  if (response === 1) { 
    // 執(zhí)行確認(rèn)退出操作
  } 
});
2.打包后子進(jìn)程中的代碼沒(méi)有執(zhí)行的問(wèn)題
場(chǎng)景:在本地開(kāi)發(fā)過(guò)程中,使用子進(jìn)程去下載資源,能夠正常的下載,但是打包之后,發(fā)現(xiàn)下載不了,子進(jìn)程中的事件沒(méi)有執(zhí)行。導(dǎo)致下載流程受阻

問(wèn)題:electron中使用到子進(jìn)程的時(shí)候,是把子進(jìn)程當(dāng)作一個(gè)外部依賴來(lái)做的,打包后并不會(huì)將子進(jìn)程的代碼打進(jìn)到包中,需要額外進(jìn)行配置。
解決方式:對(duì)子進(jìn)程文件進(jìn)行額外配置

注:本項(xiàng)目腳手架基于electron-vue,配置文件和electron-vue保持相同

打包配置:asarUnpack 這個(gè)配置是用來(lái)將子進(jìn)程中用的一些第三方包進(jìn)行整理,否則子進(jìn)程找不到這些包,就跑不起來(lái)。子進(jìn)程中用的第三方包都需要在asarUnpack中進(jìn)行配置。
extraResources 這個(gè)配置用來(lái)將我們的代碼子進(jìn)程文件所在目錄,打包出來(lái)放在一個(gè)指定的地方,在代碼中有需要引用子進(jìn)程文件的地方,就用這個(gè)地址去找對(duì)應(yīng)的js文件,因?yàn)殚_(kāi)發(fā)和打包后的路徑是不一樣的,具體package.json配置如下

    "mac": {
      "icon": "build/icons/icon.icns",
      "extendInfo": {
        "CFBundleURLSchemes": [
          "link"
        ]
      },
      "asarUnpack": [
        "**/node_modules/electron-log/**/*",
        "**/node_modules/unzipper/**/*",
        "**/node_modules/axios/**/*",
        "**/node_modules/archiver/**/*"
      ],
      "extraResources": [
        {
          "from": "src/main",
          "to": "app.asar.unpacked/download"
        }
      ]
    },
    "win": {
      "icon": "build/icons/icon.ico",
      "asarUnpack": [
        "**/node_modules/electron-log/**/*",
        "**/node_modules/unzipper/**/*",
        "**/node_modules/axios/**/*",
        "**/node_modules/archiver/**/*"
      ],
      "extraResources": [
        {
          "from": "src/main",
          "to": "app.asar.unpacked/download"
        }
      ],
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ]
    }

子進(jìn)程fork路徑:electron中開(kāi)發(fā)和打包后子進(jìn)程的fork路徑并不相同,開(kāi)發(fā)時(shí)候,可以直接使用當(dāng)前路徑進(jìn)行引用,但是打包后子進(jìn)程js文件直接通過(guò)相對(duì)路徑就獲取不到了。所以fork子進(jìn)程的時(shí)候路徑需要如下配置,process.resoucesPath: electron中定義的資源目錄的路徑,在打包后子進(jìn)程js所在的路徑。

let isDev = process.env.NODE_ENV !== "production";
let scriptPath = isDev ? path.join(__dirname, "child_download_serial.js") : path.join(process.resourcesPath, "app.asar.unpacked/download/child_download_serial.js");

上面兩步做完了,打包完畢后可以在安裝后的安裝包下看到自己子進(jìn)程的代碼目錄,此時(shí)說(shuō)明配置成功,并且子進(jìn)程和主進(jìn)程能夠正常通信了。

以上方案在windows下和mac下都適用

3.子進(jìn)程中的log輸出不了
場(chǎng)景:想看一下子進(jìn)程中輸出的log,查看子進(jìn)程的執(zhí)行情況

問(wèn)題:子進(jìn)程的console在控制臺(tái)中看不到,因?yàn)樽舆M(jìn)程和父進(jìn)程是分開(kāi)的,我們只能看到父進(jìn)程的輸出

解決方式:拿到子進(jìn)程后,在父進(jìn)程中監(jiān)聽(tīng)子進(jìn)程的stdout.on("data")事件,這樣在子進(jìn)程中的所有console.log在父親進(jìn)程中都會(huì)觸發(fā)data事件,父進(jìn)程可以輸出子進(jìn)程的console內(nèi)容。注意fork的時(shí)候需要給一個(gè)silent:true的配置,如果為 true,則子進(jìn)程的 stdin、stdout 和 stderr 將會(huì)被輸送到父進(jìn)程,否則它們將會(huì)繼承自父進(jìn)程。同理,也可以監(jiān)聽(tīng)子進(jìn)程的stderr的data事件,可以捕獲到子進(jìn)程的錯(cuò)誤

childDownload = fork(scriptPath, [], { silent: true });
childDownload.stdout.on("data", data => {
  console.log("子進(jìn)程的console", data.toString());
});
4.electron閃退的問(wèn)題
場(chǎng)景:在退出軟件的時(shí)候,由于代碼原因報(bào)了一個(gè)錯(cuò)誤,然后軟件成功關(guān)閉,但是當(dāng)再次手動(dòng)打開(kāi)軟件時(shí),出現(xiàn)閃退情況

問(wèn)題:主進(jìn)程出錯(cuò)后,沒(méi)有對(duì)錯(cuò)誤進(jìn)行捕獲,導(dǎo)致再次打開(kāi)軟件依然有這個(gè)錯(cuò)誤存在,軟件打不開(kāi)

解決方式:全局進(jìn)行一個(gè)錯(cuò)誤捕獲,避免某些情況下的錯(cuò)誤未捕獲導(dǎo)致閃退打不開(kāi)軟件的問(wèn)題

// 必要的全局錯(cuò)誤捕獲
process.on("uncaughtException", error => {
  log.error(error.stack || JSON.stringify(error));
  app.exit();
});
5.web端喚醒客戶端覆蓋問(wèn)題
場(chǎng)景:錯(cuò)題本下載器安裝后,再安裝錯(cuò)題本logger工具,此時(shí)再web中點(diǎn)擊喚醒下載工具,喚醒的是錯(cuò)題本logger工具

問(wèn)題:再兩者打包的時(shí)候,對(duì)應(yīng)的appId都是相同的,導(dǎo)致后安裝的軟件將前安裝的軟件給頂替了,當(dāng)再網(wǎng)頁(yè)中喚醒的時(shí)候,就將替換后的軟件喚醒了

解決方式:package.json中的appId保證唯一性

6.electron下使用子進(jìn)程,找不到第三方包的問(wèn)題

electron下使用子進(jìn)程,找不到第三方包的問(wèn)題
原文鏈接:https://github.com/chaijinson... 持續(xù)更新

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/106444.html

相關(guān)文章

  • 【PPic】基于Electron+Vue+iView圖床應(yīng)用設(shè)計(jì)

    摘要:其實(shí)這個(gè)應(yīng)用并不是那么的特別需求,一來(lái)本人寫(xiě)越來(lái)越少,二來(lái)開(kāi)發(fā)工作也是越做越少,再者目前的編輯器幾乎都支持直接剪切板上傳圖片,使圖床應(yīng)用的場(chǎng)景越來(lái)越少。 其實(shí)這個(gè)應(yīng)用并不是那么的特別需求,一來(lái)本人寫(xiě)blog越來(lái)越少,二來(lái)開(kāi)發(fā)工作也是越做越少,再者目前的編輯器幾乎都支持直接剪切板上傳圖片,使圖床應(yīng)用的場(chǎng)景越來(lái)越少。不過(guò)本人本著不想丟棄技術(shù)的內(nèi)心想法,以及鍛煉自己寫(xiě)一個(gè)完整項(xiàng)目,還是開(kāi)啟了...

    call_me_R 評(píng)論0 收藏0
  • electron打包:electron-packager及electron-builder兩種方式實(shí)

    摘要:前言本文主要介紹如何通過(guò)及兩種方式,將已有的應(yīng)用打包成格式和可執(zhí)行文件。導(dǎo)致了在打包的過(guò)程中非常慢。由于是初次接觸,如讀者在文中發(fā)現(xiàn)錯(cuò)誤,請(qǐng)及時(shí)指正。 前言 showImg(https://segmentfault.com/img/bV6zNn?w=1319&h=594); 本文主要介紹如何通過(guò)electron-packager及electron-builder兩種方式,將已有的ele...

    KaltZK 評(píng)論0 收藏0
  • 從零開(kāi)始使用Electron + jQuery開(kāi)發(fā)桌面應(yīng)用 (三) 注意事項(xiàng)

    摘要:例發(fā)信方收信方三使用打包時(shí)注意事項(xiàng)打包文件夾時(shí),文件夾內(nèi)不要用奇奇怪怪的文件比如等,以及名稱帶有漢字的文件。 之前兩章寫(xiě)了electron的基本用法,本來(lái)想接著寫(xiě)用jquery去完整的寫(xiě)一個(gè)程序來(lái)著,但是考慮到一是js實(shí)在沒(méi)啥好寫(xiě)的,再就是我現(xiàn)在寫(xiě)的這個(gè)程序并不想開(kāi)源,所以一直就沒(méi)寫(xiě)下去。這兩天重裝系統(tǒng)后重新配置了環(huán)境變量,再執(zhí)行時(shí)遇到一些坑,就記錄下來(lái),以免以后再進(jìn)坑。 一、elec...

    laoLiueizo 評(píng)論0 收藏0
  • 開(kāi)發(fā)了一款寫(xiě)作軟件(OSX,Windows),附帶Electron開(kāi)發(fā)指南

    摘要:本來(lái)寫(xiě)這個(gè)項(xiàng)目時(shí)就沒(méi)打算來(lái)自己實(shí)現(xiàn)富文本編輯器,本著能用開(kāi)源就用開(kāi)源的原則,在項(xiàng)目里測(cè)試了一些開(kāi)源的編輯器,發(fā)現(xiàn)或多或少都有些問(wèn)題,后來(lái)一琢磨,反正這個(gè)項(xiàng)目的富文本編輯器需求不復(fù)雜,就自己實(shí)現(xiàn)一個(gè)好了。 斷斷續(xù)續(xù)寫(xiě)了個(gè)把月,終于在昨天完成了第一版… 筆落寫(xiě)作 一款幫助網(wǎng)絡(luò)寫(xiě)手更方便地進(jìn)行小說(shuō)創(chuàng)作的PC軟件,目前支持 OSX/Windows 名字靈感來(lái)自于杜甫的一首詩(shī),前兩句是: 《寄...

    OnlyLing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<