debugging 如何调试电子伪造react-typescript的渲染过程?

cdmah0mi  于 2023-05-07  发布在  React
关注(0)|答案(3)|浏览(103)

我已经使用electron forge生成了一个基于react-typescript模板的应用程序。我为这个应用程序写了一些vscode调试配置。但我只能调试主进程,渲染器是失踪。我已经安装了调试器的 chrome 扩展和使用它之前。我想知道我在配置中缺少了什么?

{
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Electron: Main",
            "protocol": "inspector",
            "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron-forge-vscode-win",
            "runtimeArgs": [
                "--remote-debugging-port=9223",
                "."
            ],
            "windows": {
                "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron-forge-vscode-win.cmd"
            }
        },
        {
            "name": "Electron: Renderer",
            "type": "chrome",
            "request": "attach",
            "port": 9223,
            "webRoot": "${workspaceFolder}",
            "timeout": 30000
        }
    ],
    "compounds": [
        {
            "name": "Electron: All",
            "configurations": [
                "Electron: Main",
                "Electron: Renderer"
            ]
        }
    ]
}
zpqajqem

zpqajqem1#

我知道这是事后的方式,但我想回答的情况下,其他人是挣扎与这个问题,就像我今天一整天。
在阅读了matsu's blog的一个关键信息之后:
转到main.js并注解掉这一行:
mainWindow.webContents.openDevTools()
远程调试不适用于多个DevTools客户端。我们将在VS Code中使用调试器,而不是Electron的DevTools。

一些(所有?)电子伪造模板在启动时打开Chrome开发工具。Chrome / Electron的一个局限性是只支持一个到任何类型的调试器的连接(在response from MSFT here中确认)。我们只需要注解掉这一行。
在你的main.js(或index.ts或其他)中:

// Open the DevTools.
  if (isDevMode) {
    await installExtension(REACT_DEVELOPER_TOOLS);
    //mainWindow.webContents.openDevTools(); <--- comment this out
  }
iyfamqjs

iyfamqjs2#

复制你的launch.json,然后写一些代码,设置断点。测试代码放在app.tsx的末尾:

setTimeout(() => {
    let x = 0;            //break point here
    console.log(x);
}, 3000);

断点工作正常。
我在launch.json中做的另一个改变是:

"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron-forge-vscode-win",
"runtimeArgs": [
    ".",  //swap this line and the next line
    "--remote-debugging-port=9223"
]
yfjy0ee7

yfjy0ee73#

package.json中添加新脚本

"debug": "electron-forge start --vscode"

然后在.vscode/ launch.json中添加以下配置

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Electron Main",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run-script", "debug"],
      "cwd": "${workspaceFolder}"
    }
  ]
}

我已经在ReactJS with Webpack项目中使用了上面的配置。

相关问题