Sto riscontrando uno strano comportamento con instanceof in NodeJs. Sto provando a creare un modulo che genera eccezioni che possono essere catturate consumando moduli e gestite in base al tipo di eccezione. Tuttavia, la chiamata per verificare il tipo "instanceof di mod.MyException" restituisce sempre false.Nodejs + Richiede istanza di comportamento
mymodule.js:
function MyException() {}
MyException.prototype = new Error();
MyException.prototype.constructor = MyException;
function Foo() {
throw new MyException();
}
exports.Foo = Foo;
exports.MyException = MyException;
myconsumingmodule.js
var mod = require('mymodule');
try {
mod.Foo();
} catch (error) {
if (error instanceof mod.MyException) { // always returns false
//do error specific handling (never executes)
return;
}
// generic handling
}
Se faccio il test instanceof in mymodule.js in questo modo si restituisce true
mymodule .js
var a = new MyException()
console.log(a instanceof MyException); //true
Tuttavia se creare un'eccezione nel modulo che consumano e provarlo identifica correttamente come MyException, non lo fa solo quando si confrontano contro un'eccezione che è stato creato da l'altro modulo.
myconsumingmodule.js
var mod = require('mymodule')
var b = new mod.MyException();
console.log(b instanceof mod.MyException); // true
funziona per me sul nodo 0.10.5 – soulcheck
@Eriedor, hai mai trovato una soluzione a questo problema? – jayarjo
Temo di non averlo, ho abbandonato il tentativo di risolvere questo problema e non l'ho rivisitato per vedere se è stato risolto in una versione successiva del nodo. – Eriedor