vscode調試Electron+ts

調試Electron+js

調試Electron+js: https://www.electronjs.org/zh/docs/latest/tutorial/debugging-vscode


調試Electron+ts

首先看一下,我的目錄結構。目錄結構決定了launch.json中的路徑部分。我將在項目根目錄下進行調試,項目根目錄下包含electron代碼部分,和src等前端代碼部分。
在這里插入圖片描述

1.創建.vscode,創建launch.json。調試Electron+ts代碼部分。

{"version": "0.2.0","configurations": [{"type": "node","request": "launch","name": "Main","runtimeExecutable": "${workspaceRoot}/electron/node_modules/.bin/electron",	// 我的electron外部庫放在./electron/node_modules下面。如果你的放在./根目錄下,改成'${workspaceRoot}/node_modules/.bin/electron'"runtimeArgs": ["./electron",	// 這里也是,我的electron的入口文件main.ts放在./electron目錄下。如果你的在根目錄./,改成'.'// this args for attaching render process"--remote-debugging-port=9222"],"windows": {"runtimeExecutable": "${workspaceRoot}/electron/node_modules/.bin/electron.cmd"},"protocol": "legacy"}]
}

2.設置如下tsconfig.json(重要,且我的tsconfig.json在./electron/目錄下)

{"compilerOptions": {"module": "commonjs","target": "es2015","noImplicitAny": false,"sourceMap": true,	// 經過試驗,這個一定要開啟"moduleResolution": "node","lib": ["es2016", "dom"],"baseUrl": "."}
}

3.經過以上配置后,如下的的main.ts文件,經過ts編譯后(cd electron && tsc --module commonjs),ts將被編譯到./electron/dist-electron中。查看dist-electron中,是否有.sourcemap后綴的文件,如果有應該就沒有問題了。ts中打個斷點,試一下。

import { app, BrowserWindow } from 'electron/main'
import path from 'node:path'// 🚧 Use ['ENV_NAME'] avoid vite:define plugin - Vite@2.x
const VITE_DEV_SERVER_URL = 'http://localhost:8080/'const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js')}})if (!app.isPackaged) {win.loadURL('https://www.baidu.com')} else {win.loadFile(path.resolve(__dirname, '../dist-vite/index.html'))}
}app.whenReady().then(() => {createWindow()app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) {createWindow()}})
})app.on('window-all-closed', () => {if (process.platform !== 'darwin') {app.quit()}
})

在這里插入圖片描述


如何調試渲染進程

1.更改launch.json為如下內容。

{"version": "0.2.0","configurations": [{"type": "node","request": "launch","name": "Main","runtimeExecutable": "${workspaceRoot}/electron/node_modules/.bin/electron","runtimeArgs": ["./electron",// this args for attaching render process"--remote-debugging-port=9222"],"windows": {"runtimeExecutable": "${workspaceRoot}/electron/node_modules/.bin/electron.cmd"},"protocol": "legacy"},{"type": "chrome","request": "attach","name": "Renderer","port": 9222,"webRoot": "${workspaceRoot}"	// Renderer 配置中的 webRoot 參數直接使用了 ${workspaceFolder},是因為在這個工程中,HTML 引用的靜態資源位于根目錄下。}],"compounds": [	// configurations 中的兩項分別對應主進程和渲染進程。compounds 中指定了一個組合會話 All,選擇 All 將會同時啟動這兩個會話。{"name": "All","configurations": ["Main", "Renderer"]}]
}

2.在渲染進程中打一個斷點。
在這里插入圖片描述
3.啟動前端調試服務器。根目錄下直接啟動Vite服務器(重要,不然前端代碼無法執行到斷點)。

npm run dev

4.新建一個cmd,選擇debug標簽頁下的All,再按F5,啟動兩個調試器。
在這里插入圖片描述
5.這個時候,前段代碼中的斷點可能沒法打到(因為服務器已經啟動了,已經過了斷點的執行點了)。此時,刷新前段代碼,就可以執行到了。
在這里插入圖片描述


完整代碼參考

Electron-vite-template


參考

VS Code debug specs - Electron Java Script & Type Script
Electron 應用調試指南

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11869.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11869.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索QChart:Qt中的數據可視化藝術

目錄標題 1. QChart概述2. 創建QChart對象3. 添加數據系列(Series)4. 定制圖表外觀5. 交互與動畫6. 圖表布局與管理7. 實例代碼與解析8. 總結 在數字化的世界里,數據是新的石油。然而,原始數據本身往往難以理解,數據可…

數據可視化(十一):Pandas餐飲信息表分析——交叉表、離群點分析,多維分析等高級操作

Tips:"分享是快樂的源泉💧,在我的博客里,不僅有知識的海洋🌊,還有滿滿的正能量加持💪,快來和我一起分享這份快樂吧😊! 喜歡我的博客的話,記得…

golang創建式設計模式------單例模式

目錄導航 1.單例模式1)什么是單例模式 2)使用場景3)實現方式1.懶漢式單例模式2.餓漢式3.雙重檢查式4.sysc.Once式 4)實踐案例5)優缺點分析 1.單例模式 1)什么是單例模式 單例模式(Singleton Pattern)是一種常用的設計模式。單例模式的類提供了一種訪問其唯一對象的方法&#…

RAG系列論文

檢索增強模型: 提出Atlas :預訓練檢索增強模型 Few-shot Learning with Retrieval Augmented Language Models 鏈接 根據輸入問題的不同,挑選合適的提示詞 Learning To Retrieve Prompts for In-Context Learning 鏈接 RAG: M…

【數據結構】線性表--順序表(二)

文章目錄 1、什么是線性表2、線性表的基本操作3、順序表3.1、順序表的定義3.2、順序表的實現方式:靜態分配3.3、順序表的實現方式:動態分配3.4、順序表的特點3.5、順序表的初始化與插入操作3.6、順序表的刪除與查詢 1、什么是線性表 ? 線性表是具有相同…

【Python快速上手(二十二)】

目錄 Python快速上手(二十二)Python3 使用數據庫-pymysql1. 創建數據庫連接2. 創建數據表3. 插入數據4. 查詢數據5. 使用 WHERE 條件語句6. 排序7. 刪除記錄8. 更新表數據9. 刪除表10.異常處理總結 Python快速上手(二十二) Pytho…

通過EXCEL控制PLC啟停電機的一種方法

概述 本例將介紹用微軟EXCEL電子表格控制西門子S7-1200 PLC實現電機啟停的一種方法。 第1步: 添加PLC設備,選擇西門子S7-1214C CPU,設置IP地址:192.168.18.18,子網掩碼:255.255.255.0。 第2步&#xff1a…

vue3中通過自定義指令實現loading加載效果

前言 在現代Web開發中,提升用戶體驗一直是開發者們追求的目標之一。其中,一個常見的場景就是在用戶與應用程序進行交互時,特別是當進行異步操作時(如網絡請求),為用戶提供即時的反饋,避免用戶因…

Flet初體驗:Python跨平臺開發新選擇

文章目錄 ?? 介紹 ???? 演示環境 ???? 初識Flet ???? 安裝與配置?? 構建第一個Flet應用?? Flet打包:跨平臺的魔法?? Flet與FastAPI的結合?? 總結?? 相關鏈接 ???? 介紹 ?? “探索未知,擁抱創新,Flet讓我在應用開發的世界中找到了新的航標。”…

02 | 該如何選擇消息隊列?

RabbitMQ RabbitMQ 一個比較有特色的功能是支持非常靈活的路由配置,和其他消息隊列不同的是,它在生產者(Producer)和隊列(Queue)之間增加了一個 Exchange 模塊,你可以理解為交換機。 問題 Ra…

【循環程序設計-譚浩強適配】(適合專升本、考研)

無償分享學習資料,需要的小伙伴評論區或私信dd。。。 無償分享學習資料,需要的小伙伴評論區或私信dd。。。 無償分享學習資料,需要的小伙伴評論區或私信dd。。。 完整資料如下:純干貨、純干貨、純干貨!!…

淺談電動汽車充電站的電氣安全

1 引言 1月14日日上午10點左右,青島市市北區遼寧路63號公交停車場內,一輛報廢公交車突然起火,由于大風天氣,大火很快引燃了停在旁邊的幾輛報廢車。消防人員快速趕到,迅速控制住火勢。11時30分,停車場內的…

鴻蒙內核源碼分析(ELF格式篇) | 應用程序入口并不是main

閱讀之前的說明 先說明,本篇很長,也很枯燥,若不是絕對的技術偏執狂是看不下去的.將通過一段簡單代碼去跟蹤編譯成ELF格式后的內容.看看ELF究竟長了怎樣的一副花花腸子,用readelf命令去窺視ELF的全貌,最后用objdump命令…

Image to Music V2 :只需上傳一張照片,自動轉換成與圖片內容匹配的音頻!

前言 我們之前肯定已經見過了很多文本生成圖片、文本生成聲音以及AI翻唱歌曲 等多種AI產品(模型)。 其實音樂和圖片從某種意義上來說都是藝術創作的一種形式,它們可以相互配合,共同呈現出一種更加豐富、感性的表達方式。 將圖片…

弘君資本:人形機器人概念走強,盛通股份漲停,怡合達、鼎智科技等拉升

人形機器人概念14日盤中拉升走高,到發稿,盛通股份漲停,怡合達、鼎智科技漲約6%,索辰科技、偉創電氣、豐立智能等漲超4%。 音訊面上,5月13日,宇樹發布人形智能體Unitree G1,身高127cm,體重35kg&…

[240514] OpenAI 發布 GPT-4o,人機交互的歷史性時刻 | 蘋果芯片進軍服務器劍指AI? | 谷歌大會以AI為主

目錄 OpenAI 發布 GPT-4o,人機交互的歷史時刻蘋果芯片進軍服務器,劍指生成式 AI2024年谷歌開發者大會將圍繞 AI 展開 OpenAI 發布 GPT-4o,人機交互的歷史時刻 OpenAI 發布了 GPT-4o,大家一直都想要現在終于等到的語音助手 : 勿需…

618值得入手的數碼產品怎么選?2024 買過不后悔的數碼好物分享

在數字時代的浪潮中,每一次的購物狂歡節都如同一場科技盛宴,讓我們有機會接觸到最前沿、最實用的數碼產品,而“618”無疑是這場盛宴中最為引人矚目的日子之一。面對琳瑯滿目的商品,如何選擇那些真正值得入手的數碼好物&#xff0c…

易寶OA-ExecuteQueryForDataSetBinary處sql注入

免責聲明: 本文內容為學習筆記分享,僅供技術學習參考,請勿用作違法用途,任何個人和組織利用此文所提供的信息而造成的直接或間接后果和損失,均由使用者本人負責,與作者無關!!&#…

Centos 安裝jenkins 多分支流水線部署前后端項目

1、安裝jenkins 1.1 安裝jdk 要求:11及以上版本 yum install yum install java-11-openjdk 1.2 安裝jenkins 導入鏡像 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo出現以下錯誤 執行以下命令 sudo yum …

前端使用原生JS怎么上傳本地路徑的文件到后端【附源碼】

本文不使用<input type"file">等前端上傳組件 一、為什么不能使用本地文件路徑上傳&#xff1f; 前端不能直接根據本地文件路徑&#xff08;例如 C:\Users\Username\Documents\image.jpg&#xff09;上傳文件到后端服務器&#xff0c;原因主要在于瀏覽器的安全…