Tìm kiếm trang web

javascript - Gỡ lỗi ứng dụng electron-forge với VSCode


Tôi đang cố gắng gỡ lỗi dự án electron-forge của mình với VSCode (quy trình chính của electron, không phải render) nhưng gặp lỗi khắp nơi. Tôi đã cài đặt gói electron-forge với tất cả các phụ thuộc và khởi tạo dự án của mình.

Tôi đã làm theo hướng dẫn này và launch.json của tôi cho VSCode là:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Electron Main",
            "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-forge-vscode-win.cmd",
            "cwd": "${workspaceRoot}"
        }
    ]
}

Nhưng khi tôi nhấn F5 trong VSCode để gỡ lỗi, tôi nhận được Attribute "runtimeExecutable" does not exist vì electron-forge được cài đặt toàn cục nên không có tệp nào như vậy trong thư mục node_modules/.bin/.

Sau đó, theo đó tôi đã thay đổi "runtimeExecutable" và launch.json của tôi như sau:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Electron Main",
            "runtimeExecutable": "electron-forge-vscode-win.cmd",
            "cwd": "${workspaceRoot}"
        }
    ]
}

Dòng lệnh là:

electron-forge-vscode-win.cmd --debug-brk=17423 --nolazy 
√ Locating Application
√ Preparing native dependencies
√ Launching Application

Nhưng vẫn không có gì xảy ra. Ứng dụng Electron của tôi đã khởi động nhưng không dừng lại như lập luận --debug-brk yêu cầu.

Tiếp theo, tôi đã thêm một dòng vào launch.json của mình:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "name": "Electron Main",
            "runtimeExecutable": "electron-forge-vscode-win.cmd",
            "protocol": "inspector"
        }
    ]
}

Được khởi chạy với dòng lệnh này:

electron-forge-vscode-win.cmd --inspect=11172 --debug-brk 
√ Locating Application
√ Preparing native dependencies
√ Launching Application

Lưu ý: 11172 là một số cổng ngẫu nhiên

Và bây giờ tôi đang gặp lỗi này: Không thể kết nối với tiến trình runtime, hết thời gian sau 10000 ms - (lý do: Không thể kết nối với mục tiêu: connect ECONNREFUSED 127.0.0.1:11172).

Câu trả lời #1

Tôi đã đi đến kết luận rằng bạn không thể sử dụng VSCode để gỡ lỗi tiến trình chính của Electron nếu bạn sử dụng electron-forge hoặc electron-compile. Trong cả hai trường hợp, trình gỡ lỗi của VSCode bỏ qua các điểm ngắt. Cửa sổ BrowserWindow xuất hiện trực tiếp và thông báo sau xuất hiện trong cửa sổ bảng điều khiển gỡ lỗi của VSCode:

Debugging with inspector protocol because a runtime executable is set.
c:\Users\paulk\OneDrive\dev\forge-debug/node_modules/.bin/electron.CMD --inspect=16988 --debug-brk .
Debugger listening on ws://127.0.0.1:16988/9cead160-c448-4b33-a8a2-2dff6f51ed59

Đôi khi khi tôi đóng cửa sổ trình duyệt, một điểm dừng trong trình xử lý sự kiện "đóng tất cả cửa sổ" bị kích hoạt. Sau khi đóng cửa sổ, thông báo sau xuất hiện trong bảng điều khiển gỡ lỗi:

Debugger attached.

Có lẽ điều này cho thấy rằng trình gỡ lỗi VSCode không gắn vào cho đến sau khi BrowserWindow đóng.

Tôi tin rằng vấn đề xuất phát từ electron-compile, mà electron-forge sử dụng. Có lẽ nó liên quan đến việc biên dịch ngay lập tức.

Sử dụng VSCode để gỡ lỗi một ứng dụng Electron đơn giản rất dễ dàng. Hơn nữa, Electron thuần phát ra một thông điệp khác trong cửa sổ gỡ lỗi:

Debugging with inspector protocol because a runtime executable is set.
c:\Users\paulk\OneDrive\dev\electron-quick-start/node_modules/.bin/electron.CMD --inspect=37884 --debug-brk .
Debugger listening on port 37884.
Warning: This is an experimental feature and could change at any time.

Điều này cho thấy rằng Electron thuần túy đang sử dụng một phương pháp kết nối với trình gỡ lỗi khác với electron-compile.

Thật đáng tiếc là electron-forge không hoạt động với gỡ lỗi tiến trình chính của VSCode. Điều này khiến nó trở nên vô dụng đối với tôi. Ngoài ra, các nhà phát triển của electron-forge và electron-compile dường như không coi đây là một vấn đề. Sẽ rất hữu ích khi biết các trình gỡ lỗi mà các nhà phát triển của electron-forge và electron-compile cũng như người dùng của các gói này đang sử dụng để gỡ lỗi mã tiến trình chính là gì.

Câu trả lời số 2

Tôi tin rằng bạn cần thêm "protocol"="legacy" vào cấu hình khởi chạy của bạn. Điều này dựa trên giả định rằng bạn đang sử dụng phiên bản Node < 8.x