Chrome 检查器控制台不适用于版本 54.0.2840.99
Chrome inspector console does not work with version 54.0.2840.99
我使用 node-inspector 调试 Chrome 版本 54.0.2840.99 的 JS。
我在一个 windows cmd 控制台中输入 "node-inspector"
,在另一个 windows cmd 控制台中输入 "node --debug-brk l:\dev\debug\test.js"
。在 Chrome 中打开 "http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858"
。它能够像往常一样调试。但是我在Chrome控制台输入"1 + 2"
,按"Enter"
,没有任何反应。我希望 "3"
输出到 Chrome 控制台。它确实适用于 Chrome 版本 48.0.2564.116。我没有测试其他 Chrome 版本。
这是新 Chrome 版本的缺陷吗?如何解决问题?
我拍摄的照片如下:
根据建议 here, by trojanliu 的解决方法是编辑 DOMExtension.js 文件,更改 isEnterKey()
函数...
vi /usr/local/lib/node_modules/node-inspector/front-end/platform/DOMExtension.js
/isEnterKey
... 检查 keyCode === 13
:
function isEnterKey(event) {
//suit for event.keyIdentifier
return (event.keyCode !== 229 && event.keyIdentifier === "Enter") || event.keyCode === 13;
}
这是由于 Chrome 弃用 KeyboardEvent.keyIdentifier。
解决方法是将 keyIdentifier
添加回 KeyboardEvent
原型。
我还注意到 KeyboardEvent.key
字符串值与 KeyboardEvent.keyIdentifier
中的字符串值不同,因此我在下面展示了如何在需要时处理这些差异。
Object.defineProperty(KeyboardEvent.prototype, 'keyIdentifier', {
get: function() {
switch (this.key) {
case "ArrowDown":
return "Down";
break;
case "ArrowLeft":
return "Left";
break;
case "ArrowRight":
return "Right";
break;
case "ArrowUp":
return "Up";
break;
case "Tab":
return "U+0009";
break;
case "Escape":
return "U+001B";
break;
default:
return this.key;
}
}
});
仅替换 isEnterKey()
是不够的,上面的代码可以解决这个问题。
我使用 node-inspector 调试 Chrome 版本 54.0.2840.99 的 JS。
我在一个 windows cmd 控制台中输入 "node-inspector"
,在另一个 windows cmd 控制台中输入 "node --debug-brk l:\dev\debug\test.js"
。在 Chrome 中打开 "http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858"
。它能够像往常一样调试。但是我在Chrome控制台输入"1 + 2"
,按"Enter"
,没有任何反应。我希望 "3"
输出到 Chrome 控制台。它确实适用于 Chrome 版本 48.0.2564.116。我没有测试其他 Chrome 版本。
这是新 Chrome 版本的缺陷吗?如何解决问题?
我拍摄的照片如下:
根据建议 here, by trojanliu 的解决方法是编辑 DOMExtension.js 文件,更改 isEnterKey()
函数...
vi /usr/local/lib/node_modules/node-inspector/front-end/platform/DOMExtension.js
/isEnterKey
... 检查 keyCode === 13
:
function isEnterKey(event) {
//suit for event.keyIdentifier
return (event.keyCode !== 229 && event.keyIdentifier === "Enter") || event.keyCode === 13;
}
这是由于 Chrome 弃用 KeyboardEvent.keyIdentifier。
解决方法是将 keyIdentifier
添加回 KeyboardEvent
原型。
我还注意到 KeyboardEvent.key
字符串值与 KeyboardEvent.keyIdentifier
中的字符串值不同,因此我在下面展示了如何在需要时处理这些差异。
Object.defineProperty(KeyboardEvent.prototype, 'keyIdentifier', {
get: function() {
switch (this.key) {
case "ArrowDown":
return "Down";
break;
case "ArrowLeft":
return "Left";
break;
case "ArrowRight":
return "Right";
break;
case "ArrowUp":
return "Up";
break;
case "Tab":
return "U+0009";
break;
case "Escape":
return "U+001B";
break;
default:
return this.key;
}
}
});
仅替换 isEnterKey()
是不够的,上面的代码可以解决这个问题。