gpt4 book ai didi

javascript - chrome devtools 调试 react ,命中 "refresh"导致调试卡住

转载 作者:行者123 更新时间:2023-12-05 00:33:12 26 4
gpt4 key购买 nike

我不使用任何远程调试(webstorm 和 devtools)
只需使用 chrome devtools
当调试在 devtools 的断点处停止时
点击“ctrl+r”刷新也卡住了(选项卡空白,调试 session 无法重新启动)
enter image description here

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
</head>
<body>
<script src="../node_modules/react/umd/react.development.js"></script>
<script src="../node_modules/react-dom/umd/react-dom.development.js"></script>
<div id="root"></div>
<script>
var e = React.createElement

class App extends React.Component {
render() {
return e("div")
}
}

const domContainer = document.querySelector('#root');
ReactDOM.render(e(App), domContainer);
</script>
</body>
</html>

最佳答案

更新:
这是我的解决方案:https://stackoverflow.com/a/64196599/6011193
更新:
我将此错误报告给 chrome 团队,请帮我投票:https://bugs.chromium.org/p/chromium/issues/detail?id=1134899#c_ts1603534836
老的:
我猜这个 chrome bug,所以这是我的 tmp 解决方案
简而言之,使用chrome扩展api“结束进程”当前选项卡进程然后重新加载 ,它是相同的手动 chrome > 任务管理器 > 结束进程,然后点击重新加载
详细地:
使用 chrome.processes , 它需要最新的 chrome dev channel (非 chrome 稳定版)chrome.processes.terminate终止当前选项卡进程chrome.tabs.onUpdated监听“ctrl+r”重载事件,重载“localhost”dev url时,先“结束进程”再重载
以下是我的部分解决方案代码(完整代码很长所以我省略了,但您可以引用自己编写代码)

/**
*
*/
import {CrxAsync} from "./node_modules/ro-crx/src/index.js"

class ForceReloadInLocalhost extends CrxAsync {
constructor() {
super()

chrome.processes.onExited.addListener(() => {
this.startReload()
})
}

start(tab) {
if (tab == null) {
this.getCurTab((curTab) => {
this.start(curTab)
})
} else {
this.tabId = tab.id;
var tabId = this.tabId
if (tab.url.match(/localhost/)) {
this.killProcess(tabId, (status) => {
if (status == "not_process") {
this.startReload()
}
})
} else {
this.startReload()
}
}
}

startReload() {
if (this.tabId) {
this.reload(this.tabId, {}, () => {
this.tabId = null
})
}
}
}

var forceReload = new ForceReloadInLocalhost()

chrome.commands.onCommand.addListener((cmd) => {
if (cmd == "forceReload") {
forceReload.start()
}
})

var isForceReload = true
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (tab.url.match(/^https?:\/\/localhost/)) {
if (changeInfo.url == undefined /* it means is reload, so url doesn't change*/ && changeInfo.status == "loading") {
if (!isForceReload) {
isForceReload = true
forceReload.start(tab);
} else {
isForceReload = false
}
}
}
})

关于javascript - chrome devtools 调试 react ,命中 "refresh"导致调试卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64186053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com