Electron常見(jiàn)問(wèn)題

Electron是使用HTML,CSS和JavaScript來(lái)構(gòu)建跨平臺(tái)桌面應(yīng)用程序的一個(gè)開(kāi)源庫(kù).應(yīng)公司業(yè)務(wù)需求,開(kāi)發(fā)一款window桌面端應(yīng)用睦焕。第一次接觸Electron遇到很多坑红省,特此記錄分享。

使用的工具

  1. electron-vue作為整個(gè)應(yīng)用的開(kāi)發(fā)框架晶疼,結(jié)合了vue和Electron
  2. 常見(jiàn)打包工具有electron-builerelectron-packager, 本應(yīng)用使用的是擁有更強(qiáng)大的功能的electron-builder酒贬,新上手的同學(xué)可以使用electron-packager生成簡(jiǎn)單的exe程序
  3. 本地?cái)?shù)據(jù)庫(kù)為了方便兼容其他語(yǔ)言,選擇了sqlite,而非常見(jiàn)的lowdb翠霍,同時(shí)為了保證一定的加密效果锭吨,最終選擇了@journeyapps/sqlcipher, 相比普通sqlite這個(gè)包使用了SQLCiphe加密
  4. 其他前端開(kāi)發(fā)工具選擇vue全家桶vue-routervuex寒匙、axioselement-ui

Electron 安裝失敗問(wèn)題

參考官方文檔 1
https://electronjs.org/docs/tutorial/installation#%E6%95%85%E9%9A%9C%E6%8E%92%E6%9F%A5

electron-vue 常見(jiàn)問(wèn)題

參考文檔:https://simulatedgreg.gitbooks.io/electron-vue/content/cn/faqs.html

electron-builder配置

{
  "build": {
    "productName": "wcdAssistor",
    "appId": "727438548@qq.com",
    "directories": {
      "output": "build"
    },
    "files": [
      "dist/electron/**/*"
    ],
    "extraResources": [
      "depend/**/*"
    ],
    // 核心打包時(shí)的配置
    "dmg": {
      "contents": [
        {
          "x": 410,
          "y": 150,
          "type": "link",
          "path": "/Applications"
        },
        {
          "x": 130,
          "y": 150,
          "type": "file"
        }
      ]
    },
    "mac": {
      "icon": "static/icons/256x256.png"
    },
    "win": {
      "icon": "static/icons/256x256.png", // window下應(yīng)用的圖標(biāo)
      "legalTrademarks": "58Assistor"
    },
    "linux": {
      "icon": "static/icons"
    },
    "nsis": {
      "oneClick": false, // 是否一鍵安裝零如,不可更改目錄等選項(xiàng),默認(rèn)為true
      "perMachine": true,
      "allowElevation": true, // 是否允許權(quán)限提升
      "allowToChangeInstallationDirectory": true, // 是否允許更改安裝路徑
      "createDesktopShortcut": true, // 是否創(chuàng)建桌面圖標(biāo)
      "runAfterFinish": true,  // 安裝完成請(qǐng)求運(yùn)行
      "shortcutName": "wcd助手", // 桌面圖標(biāo)名稱(chēng)
      "installerIcon": "./static/icons/icon.ico", // 安裝包圖標(biāo)
      "uninstallerIcon": "./static/icons/icon.ico" //卸載程序圖標(biāo)
    },
    "publish": [
      {
        "provider": "generic", // 自定義更新包路徑
        "url": "http://wucd.top/xw_update/" // 更新包所在地址
      }
    ]
  }
}

其他文檔:https://github.com/eyasliu/blog/issues/22

首次build失敗的問(wèn)題

找到報(bào)錯(cuò)位置為下載失敗锄弱,需要手動(dòng)下載文件到~/AppData/Local/electron-builder/cache下相應(yīng)目錄考蕾,比如最終我的目錄結(jié)構(gòu)為:

# 7z文件為手動(dòng)下載的文件,然后解壓到同級(jí)目錄会宪,解壓后7z文件可以刪除肖卧,但我沒(méi)刪除
+-- xxx/cache
    +-- nsis
        +-- nsis-3.0.31
            +-- 好多的文件
        +-- nsis-resources-3.3.0
            +-- 好多的解壓后的文件
        +-- nsis-3.0.3.1.7z
        +-- nsis-resources-3.3.0.7z
    +-- winCodeSign
        +-- winCodeSign-2.1.0
            +-- 解壓的文件
        +-- winCodeSign-2.1.0.7z

electron-builder 更新模塊出錯(cuò)的問(wèn)題

出現(xiàn)A complete solution to package and build a ready for distribution Electron app with "auto update" support out of the box...的問(wèn)題
electron-vue 不適用于新版本的electron-builder中的autoUpdate模塊,需要手動(dòng)安裝autoUpdate到3.0.0版本掸鹅,注意要裝在devDependices里塞帐,否則會(huì)出現(xiàn)要求最低版本為4.0.0的錯(cuò)誤提示

sqlite使用失敗的問(wèn)題

sqlite安裝過(guò)程有許多坑拦赠,這里使用的是帶有一定加密性的@journeyapps/sqlcipher, 它的所需環(huán)境和sqlite類(lèi)似,下面的步驟同樣適用于sqlite的使用

  1. 配置window下編譯環(huán)境
npm install windows-build-tools -g
  1. 檢測(cè)當(dāng)前使用的electron版本
electron --version

比如我的是2.0.4

  1. 安裝sqlite
cnpm  install   sqlite3@latest   --build-from-source   --runtime=electron --target=2.0.4
--dist-url=https://atom.io/download/electron --save

葵姥!注意 這里一定使用cnpm, npm運(yùn)行會(huì)失敗荷鼠,即使翻墻后也會(huì)失敗,所以務(wù)必使用cnpm

electron-vue 使用vuex失效的問(wèn)題

使用electron-vue創(chuàng)建項(xiàng)目并使用vuex, 有可能出現(xiàn)在開(kāi)發(fā)web時(shí)正常使用的方法榔幸,在這里失效的問(wèn)題颊咬,這可能是使用vuex-electron的緣故。vuex-electron主要用作在多個(gè)進(jìn)程中共享數(shù)據(jù)牡辽,解決方法可任選其一

  1. 如果沒(méi)有多個(gè)進(jìn)程的場(chǎng)景喳篇,可以去掉vuex-electron的使用,單獨(dú)使用vuex, 或者在store/index.js中去掉createSharedMutations的使用
import Vue from 'vue'
import Vuex from 'vuex'
 ?// 去掉createSharedMutations的引用
import {createPersistedState/**, createSharedMutations */  } from 'vuex-electron'
 ?
import modules from './modules'
 ?
Vue.use(Vuex)
 
export default new Vuex.Store({
   modules,
   plugins: [
     createPersistedState(),
     createSharedMutations()  // 注釋掉這行行代碼
   ],
   strict: process.env.NODE_ENV !== 'production'
})
  1. 如果確實(shí)有多進(jìn)程的應(yīng)用場(chǎng)景态辛,需要用到vuex-electron可以使用以下方法
    源目錄/src/main/index.js中開(kāi)頭加上store的引用即 import '../renderer/store'

總結(jié)

作為首次嘗試Electron開(kāi)發(fā)項(xiàng)目麸澜,在整個(gè)開(kāi)發(fā)過(guò)程中遇到的坑遠(yuǎn)遠(yuǎn)不止這些,這里不再一一列舉奏黑。如果大家在開(kāi)發(fā)中遇到相關(guān)問(wèn)題炊邦,歡迎一起討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末熟史,一起剝皮案震驚了整個(gè)濱河市馁害,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹂匹,老刑警劉巖碘菜,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異限寞,居然都是意外死亡忍啸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)履植,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)计雌,“玉大人,你說(shuō)我怎么就攤上這事玫霎≡渎耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵庶近,是天一觀的道長(zhǎng)翁脆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)拦盹,這世上最難降的妖魔是什么鹃祖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上恬口,老公的妹妹穿的比我還像新娘校读。我一直安慰自己,他們只是感情好祖能,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布歉秫。 她就那樣靜靜地躺著,像睡著了一般养铸。 火紅的嫁衣襯著肌膚如雪雁芙。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,245評(píng)論 1 299
  • 那天钞螟,我揣著相機(jī)與錄音兔甘,去河邊找鬼。 笑死鳞滨,一個(gè)胖子當(dāng)著我的面吹牛洞焙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拯啦,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼澡匪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了褒链?” 一聲冷哼從身側(cè)響起唁情,我...
    開(kāi)封第一講書(shū)人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甫匹,沒(méi)想到半個(gè)月后甸鸟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赛惩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年哀墓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喷兼。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖后雷,靈堂內(nèi)的尸體忽然破棺而出季惯,到底是詐尸還是另有隱情,我是刑警寧澤臀突,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布勉抓,位于F島的核電站,受9級(jí)特大地震影響候学,放射性物質(zhì)發(fā)生泄漏藕筋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一梳码、第九天 我趴在偏房一處隱蔽的房頂上張望隐圾。 院中可真熱鬧伍掀,春花似錦、人聲如沸暇藏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盐碱。三九已至把兔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓮顽,已是汗流浹背县好。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暖混,地道東北人聘惦。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像儒恋,于是被迫代替她去往敵國(guó)和親善绎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容