前言
記錄electron-vue項目開發中遇到的一個錯誤,運行時報錯如圖:
控制台報錯如下:
ReferenceError: document is not defined
at Object.<anonymous> (E:\workspace\myElectron\my-electron-app\my-electron-app\node_modules\_element-ui@2.15.1@element-ui\lib\utils\dom.js:22:39)
at Object.<anonymous> (E:\workspace\myElectron\my-electron-app\my-electron-app\node_modules\_element-ui@2.15.1@element-ui\lib\utils\dom.js:235:3)
at Module._compile (module.js:642:30)
at Object.Module._extensions..js (module.js:653:10)
出錯的提示是 document is nor defined 第一次遇到這樣的錯誤,在element-ui中document沒有定義,然后我就去對應的文件夾里找錯,發現沒什么用,然后找同學問,群里問,可能node環境的問題,緊接着我將本地的 node10 的版本升級到了14,刪除依賴,再次安裝依賴 ,一切能用的方法都用了,沒辦法,一行一行檢查代碼,發現是主進程中報錯,去main.js中排查,找到了問題,原來 main.js 主線程中引入了渲染進程中的文件,而該文件需要訪問 element-ui 這個文件,主進程中沒有 document 這個對象,所以報錯提示主進程中 document is not defined。
總結
Electron = Chromium + Node.js + Native API ,我的項目用的electron-vue腳手架搭建,引入了 element-ui 庫,主進程負責了應用的中創建 BrowserWindow 實例以及各種應用程序事件,比如主進程中通知消息、Webcontents 事件、Webview新建窗口、注冊全局的快捷鍵,創建系統菜單,響應自動更新等操作,應用程序入口指向主進程執行的 JavaScript 腳本,主進程使得nodejs 的一些 api 能在渲染進程中使用;渲染進程主要負責應用程序中用戶界面,其實就是 webcontents 實例的網頁,在渲染進程中能夠使用dom提供的一些api外,能直接使用nodejs提供的api和electron 提供的 api (比如dialog彈窗,給鼠標右擊綁定觸發事件,window監聽的一些斷網測試等)。
以上就是本文的全部內容,希望給讀者帶來些許的幫助和進步,方便的話點個關注,小白的成長踩坑之路會持續更新一些工作中常見的問題和技術點。