file-type

利用electron-debug增强Electron应用的调试体验

ZIP文件

下载需积分: 47 | 8KB | 更新于2025-09-06 | 201 浏览量 | 2 下载量 举报 收藏
download 立即下载
在当前的IT开发领域中,Electron 是一个相当流行的框架,它允许开发者使用 JavaScript、HTML 和 CSS 来创建跨平台的桌面应用程序。在开发一个Electron 应用程序时,调试是不可或缺的一个步骤,它可以帮助开发者找出程序中的问题并解决它们。而 "electron-debug" 是一个为 Electron 应用程序添加调试功能的 npm 包,它极大地简化了开发者的调试工作流程。 ### Electron 调试特性 **开发工具(DevTools)** 在 Chrome 浏览器和 Electron 中,开发者工具(DevTools)是用于调试和分析网页的内置工具。通过使用快捷键可以快速切换 DevTools。对于 macOS 用户,快捷键为 `Cmd + Alt + I` 或 `F12`;而 Linux 和 Windows 用户则使用 `Ctrl + Shift + I` 或 `F12`。DevTools 提供了源代码编辑器、控制台、网络监视器和其他用于调试的工具。 **重装(Reload)** 在开发期间,开发者需要频繁重新加载页面以查看代码更改的效果。在 Electron 中,可以通过快捷键强制重新加载窗口。对于 macOS 用户,快捷键是 `Cmd + R` 或 `F5`;而 Linux 和 Windows 用户使用 `Ctrl + R` 或 `F5`。这可以帮助开发者实时看到代码更改后的效果,提高开发效率。 **元素检查器** 元素检查器(Element Inspector)是 DevTools 中用于检查和修改页面 DOM 的工具。开发者可以通过快捷键 `Cmd + Shift + C`(macOS)、`Ctrl + Shift + C`(Linux 和 Windows)快速打开元素检查器,以便于开发者对页面元素进行检查和调试。 **激活 DevTools 扩展** Electron DevTools 扩展能够扩展 DevTools 的功能,提供了更高级的调试工具。例如,官方的 Electron DevTools 扩展提供了额外的功能,能够帮助开发者更深入地了解和调试 Electron 应用程序。需要注意的是,如果在创建 `BrowserWindow` 时禁用了 `nodeIntegration`,则需要特别安装这些扩展来使用它们。 ### JavaScript 在 Electron 中的应用 Electron 应用程序的主进程和渲染进程中的脚本均使用 JavaScript 编写。这意味着开发者可以利用 JavaScript 的强大功能,包括异步编程、闭包、模块化等来构建应用程序。JavaScript 在 Electron 中的表现与在浏览器中类似,因此开发者可以利用其丰富的前端知识和库,如 React、Vue 或 Angular 来创建用户界面。 ### electron-debug 包功能 使用 "electron-debug" 包,开发者可以轻松地为 Electron 应用程序添加上述调试功能。这个 npm 包通过自动化方式将快捷键和命令集成到 Electron 开发环境,使得调试工作更加直观和方便。 开发者只需在项目中安装 "electron-debug",并按照文档进行配置,即可享受到一键切换 DevTools、强制重装窗口、打开元素检查器和激活 DevTools 扩展等便捷调试体验。这大大降低了 Electron 开发的门槛,尤其对新手开发者来说,能够快速上手并提高开发效率。 ### 开发 Electron 应用时的调试技巧 在开发 Electron 应用程序时,以下是一些调试技巧: - 使用 `console.log()` 在代码中添加日志,以帮助跟踪程序执行流程和数据状态。 - 熟悉并充分利用 DevTools 中的 Source、Network、Console 和 Elements 面板进行调试。 - 利用断点功能暂停代码执行,逐步检查变量值和程序流程。 - 使用 DevTools 的调试控制台直接运行代码片段,测试和验证代码逻辑。 - 当 DevTools 无法满足特定需求时,可以安装和使用额外的开发者扩展或工具。 - 了解 Electron 的双进程架构,并针对主进程和渲染进程采取不同的调试策略。 通过熟练地应用这些知识点和技巧,开发者可以更加高效地构建和调试他们的 Electron 应用程序,创造出更加稳定和用户体验良好的软件产品。

相关推荐

filetype

{ "name": "my-app", "version": "0.1.0", "private": true, "main": "main.js", "homepage ": ".", "dependencies": { "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^27.5.2", "@types/node": "^16.18.126", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", "electron-packager": "^17.1.2", "electron-reloader": "^1.2.3", "electron-squirrel-startup": "^1.0.1", "react": "^19.0.0", "react-dom": "^19.0.0", "react-scripts": "5.0.1", "typescript": "^4.9.5", "web-vitals": "^2.1.4" }, "scripts": { "start:electron": "electron .", "test:electron": "echo \"Error: no test specified\" && exit 1", "start": "electron-forge start", "start:react": "cross-env ENV_FILE=.env.development react-scripts start", "build": "cross-env ENV_FILE=.env.production react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "package": "electron-forge package", "make": "electron-forge make" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "@electron-forge/cli": "^7.7.0", "@electron-forge/maker-deb": "^7.7.0", "@electron-forge/maker-rpm": "^7.7.0", "@electron-forge/maker-squirrel": "^7.7.0", "@electron-forge/maker-zip": "^7.7.0", "@electron-forge/plugin-auto-unpack-natives": "^7.7.0", "@electron-forge/plugin-fuses": "^7.7.0", "@electron/fuses": "^1.8.0", "cross-env": "^7.0.3", "dotenv": "^16.4.7", "dotenv-expand": "^12.0.1", "electron": "^35.0.1" } } 中electron开发过程的环境变量怎么配置

filetype

{ "name": "E-tools", "version": "1.3.6", "description": "e-tools is an Open-Source project to support tools for desktop Mac, Windows, and Linux. ", "main": "main.js", "scripts": { "start": "electron .", "dev": "electron . --debug", "test": "mocha && standard", "pack:test": "electron-builder --dir", "pack": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder --dir", "pack:all": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder --platform=all", "dist": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder", "dist:mac": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder -m", "dist:win": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder -w", "dist:linux": "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ electron-builder -l", "package": "npm-run-all package:*", "package:mac": "electron-packager ./app --overwrite --platform=darwin --arch=x64 --out=out --icon=app/assets/app-icon/mac/app.icns --osx-sign.identity='Developer ID Application: GitHub'", "package:win": "electron-packager ./app --overwrite --platform=win32 --arch=ia32 --out=out --icon=app/assets/app-icon/win/app.ico", "package:linux": "electron-packager ./app --overwrite --platform=linux --arch=x64 --out=out", "package:sign-exe": "signcode './out/E-tools-win32-ia32/e-tools.exe' --cert ~/e-tools.p12 --prompt --name 'E-tools' --url 'http://blog.suremotoo.site/e-tools/'", "package:installer": "node ./script/installer.js", "package:sign-installer": "signcode './out/windows-installer/EtoolsSetup.exe' --cert ~/E-tools.p12 --prompt --name 'E-tools' --url 'http://blog.suremotoo.site/e-tools/'", "package:mas": "./script/mas.sh", "windows-store": "node ./script/windows-store.js", "release": "node ./script/release.js", "verify": "echo 当前ELECTRON_MIRROR=%ELECTRON_MIRROR% && echo 当前electron-builder镜像=%electron-builder-binaries_mirror%" }, "repository": { "type": "git", "url": "git+https://github.com/Suremotoo/e-tools.git" }, "keywords": [ "electron", "desktop", "tools" ], "author": "Suremotoo", "email": "[email protected]", "license": "MIT", "bugs": { "url": "https://github.com/Suremotoo/e-tools/issues" }, "homepage": "https://github.com/Suremotoo/e-tools#readme", "build": { "appId": "site.suremotoo.e-tools", "copyright": "Suremotoo", "productName": "E-tools", "dmg": {}, "mac": { "icon": "assets/app-icon/mac/app.icns" }, "win": { "icon": "assets/app-icon/win/app.ico" }, "linux": { "icon": "assets/app-icon/png/1024.png" } }, "devDependencies": { "cross-env": "^10.0.0", "electron": "^3.0.0", "electron-builder": "^26.0.12" }, "dependencies": { "body-parser": "^1.18.3", "electron-packager": "^12.0.1", "electron-store": "^2.0.0", "express": "^4.16.3", "glob": "^7.1.2", "sql-formatter": "^2.3.0", "uuid": "^3.3.2" } } 这是原始代码,我需要打包成exe桌面应用

filetype

D:\admin-project\guangxi-quan-vue3>npm run electron:build -- --debug > [email protected] electron:build > set ELECTRON_MIRROR=https://github.com/electron/electron/releases/download/ && npm run build && electron-builder -c.extraMetadata.main=electron/main.js --debug > [email protected] build > vite build vite v5.4.19 building for production... ✓ 136 modules transformed. dist/index.html 0.43 kB │ gzip: 0.29 kB dist/assets/index-fRN9Gjbe.css 3.24 kB │ gzip: 1.18 kB dist/assets/home-4Rnli7SO.css 7.87 kB │ gzip: 1.90 kB dist/assets/index-DWI3OzZM.js 92.14 kB │ gzip: 36.63 kB dist/assets/home-qQcH4Glo.js 199.11 kB │ gzip: 69.78 kB ✓ built in 1.28s cli.js build Build Commands: cli.js build Build [default] cli.js install-app-deps Install app deps cli.js node-gyp-rebuild Rebuild own native code cli.js create-self-signed-cert Create self-signed code signing cert for Windows apps cli.js start Run application in a development mode using electron-webpack Building: -m, -o, --mac, --macos Build for macOS, accepts target list (see https://goo.gl/5uHuzj). [array] -l, --linux Build for Linux, accepts target list (see https://goo.gl/4vwQad) [array] -w, --win, --windows Build for Windows, accepts target list (see https://goo.gl/jYsTEJ) [array] --x64 Build for x64 [boolean] --ia32 Build for ia32 [boolean] --armv7l Build for armv7l [boolean] --arm64 Build for arm64 [boolean] --universal Build for universal [boolean] --dir Build unpacked dir. Useful to test. [boolean] --prepackaged, --pd The path to prepackaged app (to pack in a distributable format) --projectDir, --project The path to project directory. Defaults to current working directory. -c, --config The path to an electron-builder config. Defaults to `electron-builder.yml` (or `json`, or `json5`, or `js`, or `ts`), see https://goo.gl/YFRJOM Publishing: -p, --publish Publish artifacts, see https://goo.gl/tSFycD [choices: "onTag", "onTagOrDraft", "always", "never", undefined] Other: --help Show help [boolean] --version Show version number [boolean] Examples: electron-builder -mwl build for macOS, Windows and Linux electron-builder --linux deb tar.xz build deb and tar.xz for Linux electron-builder --win --ia32 build for Windows ia32 electron-builder set package.json property `foo` to -c.extraMetadata.foo=bar `bar` electron-builder configure unicode options for NSIS --config.nsis.unicode=false See https://electron.build for more documentation. Unknown argument: debug

filetype

⨯ symlink usr\share\icons\hicolor\256x256\apps\flowoutdemo.png D:\admin-project\guangxi-quan-vue3\app_dist\__appImage-x64\flowoutdemo.png: A required privilege is not held by the client. github.com/develar/app-builder/pkg/package-format/appimage.copyIcons.func1.1 /Users/runner/work/app-builder/app-builder/pkg/package-format/appimage/appLauncher.go:82 github.com/develar/app-builder/pkg/util.MapAsyncConcurrency.func2 /Users/runner/work/app-builder/app-builder/pkg/util/async.go:68 runtime.goexit /Users/runner/hostedtoolcache/go/1.21.13/arm64/src/runtime/asm_amd64.s:1650 • cannot execute chmod error=exec: "chmod": executable file not found in %PATH% • cannot execute chmod error=exec: "chmod": executable file not found in %PATH% • cannot execute chmod error=exec: "chmod": executable file not found in %PATH% ⨯ cannot execute cause=exec: "C:\\Users\\49118\\AppData\\Local\\electron-builder\\Cache\\appimage\\appimage-12.0.1\\linux-x64\\mksquashfs": file does not exist command='C:\Users\49118\AppData\Local\electron-builder\Cache\appimage\appimage-12.0.1\linux-x64\mksquashfs' 'C:\Users\49118\AppData\Local\electron-builder\Cache\snap\snap-template-electron-4.0-2-amd64\data-dir' 'C:\Users\49118\AppData\Local\electron-builder\Cache\snap\snap-template-electron-4.0-2-amd64\desktop-common.sh' 'C:\Users\49118\AppData\Local\electron-builder\Cache\snap\snap-template-electron-4.0-2-amd64\desktop-gnome-specific.sh' 'C:\Users\49118\AppData\Local\electron-builder\Cache\snap\snap-template-electron-4.0-2-amd64\desktop-init.sh' 'C:\Users\49118\AppData\Local\electron-builder\Cache\snap\snap-template-electron-4.0-2-amd64\gnome-platform' 'C:\Users\49118\AppData\Local\electron-builder\Cache\snap\snap-template-electron-4.0-2-amd64\lib' 'C:\Users\49118\AppData\Local\electron-builder\Cache\snap\snap-template-electron-4.0-2-amd64\usr' 'D:\admin-project\guangxi-quan-vue3\app_dist\__snap-amd64\command.sh' 'D:\admin-project\guangxi-quan-vue3\app_dist\__snap-amd64\meta' 'D:\admin-project\guangxi-quan-vue3\app_dist\__snap-amd64\scripts' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\chrome_100_percent.pak' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\chrome_200_percent.pak' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\chrome_crashpad_handler' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\flowoutdemo' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\icudtl.dat' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\libEGL.so' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\libffmpeg.so' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\libGLESv2.so' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\libvk_swiftshader.so' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\libvulkan.so.1' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\locales' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\resources' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\resources.pak' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\snapshot_blob.bin' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\v8_context_snapshot.bin' 'D:\admin-project\guangxi-quan-vue3\app_dist\linux-unpacked\vk_swiftshader_icd.json' 'D:\admin-project\guangxi-quan-vue3\app_dist\flowoutdemo_0.0.0_amd64.snap' -no-progress -quiet -noappend -comp xz -no-xattrs -no-fragments -all-root workingDir= ⨯ Cannot cleanup: Error #1 -------------------------------------------------------------------------------- Error: D:\admin-project\guangxi-quan-vue3\node_modules\app-builder-bin\win\x64\app-builder.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE Exit code: 1 at ChildProcess.<anonymous> (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\util.ts:259:14) at Object.onceWrapper (node:events:639:26) at ChildProcess.emit (node:events:524:28) at ChildProcess.cp.emit (D:\admin-project\guangxi-quan-vue3\node_modules\cross-spawn\lib\enoent.js:34:29) at maybeClose (node:internal/child_process:1104:16) at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5) Error #2 -------------------------------------------------------------------------------- Error: D:\admin-project\guangxi-quan-vue3\node_modules\app-builder-bin\win\x64\app-builder.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE Exit code: 2 at ChildProcess.<anonymous> (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\util.ts:259:14) at Object.onceWrapper (node:events:639:26) at ChildProcess.emit (node:events:524:28) at ChildProcess.cp.emit (D:\admin-project\guangxi-quan-vue3\node_modules\cross-spawn\lib\enoent.js:34:29) at maybeClose (node:internal/child_process:1104:16) at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5) failedTask=build stackTrace=Error: Cannot cleanup: Error #1 -------------------------------------------------------------------------------- Error: D:\admin-project\guangxi-quan-vue3\node_modules\app-builder-bin\win\x64\app-builder.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE Exit code: 1 at ChildProcess.<anonymous> (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\util.ts:259:14) at Object.onceWrapper (node:events:639:26) at ChildProcess.emit (node:events:524:28) at ChildProcess.cp.emit (D:\admin-project\guangxi-quan-vue3\node_modules\cross-spawn\lib\enoent.js:34:29) at maybeClose (node:internal/child_process:1104:16) at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5) Error #2 -------------------------------------------------------------------------------- Error: D:\admin-project\guangxi-quan-vue3\node_modules\app-builder-bin\win\x64\app-builder.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE Exit code: 2 at ChildProcess.<anonymous> (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\util.ts:259:14) at Object.onceWrapper (node:events:639:26) at ChildProcess.emit (node:events:524:28) at ChildProcess.cp.emit (D:\admin-project\guangxi-quan-vue3\node_modules\cross-spawn\lib\enoent.js:34:29) at maybeClose (node:internal/child_process:1104:16) at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5) at throwError (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\asyncTaskManager.ts:88:11) at checkErrors (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\asyncTaskManager.ts:53:9) at AsyncTaskManager.awaitTasks (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\asyncTaskManager.ts:67:7) at processTicksAndRejections (node:internal/process/task_queues:95:5) at D:\admin-project\guangxi-quan-vue3\node_modules\app-builder-lib\src\platformPackager.ts:189:7 at async Promise.all (index 0) at AsyncTaskManager.awaitTasks (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\asyncTaskManager.ts:65:25) at Packager.doBuild (D:\admin-project\guangxi-quan-vue3\node_modules\app-builder-lib\src\packager.ts:507:5) at executeFinally (D:\admin-project\guangxi-quan-vue3\node_modules\builder-util\src\promise.ts:12:14) at Packager.build (D:\admin-project\guangxi-quan-vue3\node_modules\app-builder-lib\src\packager.ts:425:31)

WebWitch
  • 粉丝: 33
上传资源 快速赚钱