Ich habe eine Versprechen-basierte Bibliothek (für Node.js 0.10 - 6.x) mit einer Methode, die mit einem Array
zurückweist.Kombinieren Array mit Fehler in einem einzigen Typ
Bei Verwendung von Bluebird wird eine Warnung ausgegeben: a promise was rejected with a non-error
.
Das Array in einen benutzerdefinierten Fehlertyp zu verpacken ist einfach, aber ich möchte vermeiden, dass die Abwärtskompatibilität der Bibliothek verletzt wird.
Ist es möglich, ein solches Objekt zu implementieren, das als ein Array verwendet werden könnte, während es von Bluebird gleichzeitig als Objekt Error
gesehen wird?
Extras
Wenn aus Error
ich folgende Helfer mit Node.js 0.10 für Kompatibilität verwenden vererben - 0,12:
function inherits(child, parent) {
child.prototype.__proto__ = parent.prototype;
}
und Blick auf die Bluebird Quelle, vielleicht ist es eine Möglichkeit, Umgehung der Überprüfung irgendwie:
Promise.prototype._rejectCallback =
function(reason, synchronous, ignoreNonErrorWarnings) {
var trace = util.ensureErrorObject(reason);
var hasStack = trace === reason;
if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {
var message = "a promise was rejected with a non-error: " +
util.classString(reason);
this._warn(message, true);
}
this._attachExtraTrace(trace, synchronous ? hasStack : false);
this._reject(reason);
};
Ich habe gerade meine Frage aktualisiert - es ist speziell für Node.js (0.10 - 6.x) –
Einige dieser erlauben 'extends Error', einige nicht. Pro https://kangax.github.io/compat-table/es6/, v4 und v5 erfordern 'use strict' (falsch) und v6 erlaubt das Unterlassen von Fehlern im Allgemeinen, aber v0.10 und v0.12 nicht. – ssube
Ich benutze bereits eine Unterlegscheibe für Sub-Classing unter Node.js 0.10 - 0.12, es funktioniert gut. Ich nehme an, dass es dort auch gemacht werden kann? :) 'Funktion erbt (untergeordnete, übergeordnete) { child.prototype .__ proto__ = parent.prototype; } ' –