[Technical Issue] WebStorm + Node.js не може да дебъгва когато екстендвам Object.prototype
Когато дебъгвам с node.js в WebStorm и ползвам наследяване по този начин
Object.prototype.inherit = function (parent) {
this.prototype = Object.create(parent.prototype);
this.prototype.constructor = this;
};
сторма дава "Cannot stop on breakpoint due to internal error". Във същото време програмата работи коректно - само не може да се дебъгва!
След доста ровене в нета не намерих никой друг с такъв проблем. Също така ако закача скрипта към html и дебъгвам през chrome не само работи, но и се дебъгва без проблем. Явно проблема е в WebStorm и/или node.js.
Някой друг натъкнал ли се е на този проблем?
Ако да - ето до какво решение стигнах - закачваме inherit към Object с defineProperty:
Object.defineProperty(Object.prototype, "inherit", {
value: function (parent) {
this.prototype = Object.create(parent.prototype);
this.prototype.constructor = this;
}
});
По незнайни причини последното се дебъгва нормално в WebStorm дори само с node.js
this.prototype = Object.create(parent.prototype);
Не резултира ли до точно това?
Точно това е, но в случая той закача "inherit" на прототипа на "Object" и може от там нещо да се омазва при дебъгване.
Да де, ама не е правилното решение да пробва да прави наследяване така, след като иска да си спести работа и да абстрактне наследяването. Всмисъл такъв, заради едното дебъгване, го караш да махне абстракцията и за всеки клас по отделно да пише Object.create.
Най-вероятно node-а не разбира от това да добавяш към built-in типовете подобни неща. До колкото прочитам целия пост с defineProperty() работи супер.