我使用node-inspector来调试JS版本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版本。
答案 0 :(得分:4)
here建议{@ 3}}的解决方法是编辑 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;
}
答案 1 :(得分:1)
这是由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()
是不够的,上面的代码会处理此修复。