3

Я использую node-inspector для отладки JS с версией Chrome версии 54.0.2840.99. Я ввожу "node-inspector" в одну консоль Windows cmd и "node --debug-brk l:\dev\debug\test.js" в другую консоль Windows cmd. Открыть "http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858" в Chrome. Он может отлаживать, как обычно. Но я ввожу "1 + 2" в консоль Chrome, нажмите "Enter", ничего не произойдет. Я бы ожидал, что "3" будет выводиться на консоль Chrome. Он работал с Chrome версии 48.0.2564.116. Я не тестировал другие версии Chrome.Консоль инспектора Chrome не работает с версией 54.0.2840.99

Это дефект новых версий Chrome? Как решить проблему? я захватил фотографии, как показано ниже: enter image description here

enter image description here enter image description here

+1

Как вы можете видеть, https://crbug.com/661613 является WontFix, чтобы убедить разработчиков, что вам нужно будет доказать, что это их вина, [предоставляя журнал bisect] (https://www.chromium.org/ разработчики/bisect-builds-py), которые определяли бы причину. Или просто установите рабочую версию Chrome. – wOxxOm

+0

Я видел эту ошибку. Я не могу поверить, что он отмечен WontFix. Все работает хорошо с предыдущими версиями Chrome 54. Разве это не регрессия Chrome 54? Я не могу поверить. – ldlchina

+0

Протокол в Chrome может меняться со временем. Как сказано в этом выпуске, напишите отчет об ошибке с помощью «node-inspector», поскольку это не проблема Chrome. Недавно команда Chrome работала над собственной отладкой Node. Возможно, стоит проверить эту работу и посмотреть, работает ли она на вас. – Garbee

ответ

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() не является достаточным и выше код обрабатывает это исправление.

4

Обходной, как это было предложено here, по 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; 
} 
+0

Спасибо. Этот обходной путь должен работать для узла-инспектора. Как насчет временного решения для старого cef? – ldlchina

+0

Это только фиксирует ключ ввода.Он не будет исправлять вкладку, клавиши со стрелками и т. Д. См. Другой ответ для исправления, которое обрабатывает все эти сценарии. – spex

Смежные вопросы