Ich verwende bluebird
in meiner App und ich benutze Babel, um meinen Code in es5 zu kompilieren. Allerdings habe ich immer diese Warnung bekommen und ich habe überprüft, dass jedes Stück Promise return
Wert hat.ein Versprechen wurde in einem Handler erstellt, wurde aber nicht in Bluebird zurückgegeben
Hier ist mein Code:
Promise.promisifyAll(fs);
use.login().then((result) => {
console.log(result);
doSomething('../test.png');
});
function doSomething(filepath) {
return fs.readFileAsync(filepath).then((bufs) => (
doPost(url, bufs, filepath)
.then((res) => (
res.error ? Promise.reject(res.error) : Promise.resolve(res))
)
)).catch((err) => {
console.error(err);
return err;
});
}
function doPost(url, bufs = null, filepath = null) {
return new Promise((resolve, reject) => (
unirest.post(url)
.headers(config.Headers)
.timeout(120000)
.field(bufs)
.attach('files', filepath)
.end((res) => (
res.error ? reject(res.error) : resolve(res)
))
));
}
Details von Fehlermeldungen:
Warning: a promise was created in a handler but was not returned from it
at doSomething (/home/test/Documents/test/lib/abc.js:2:27)
// This line number is referred to the compiled code which is equal to line 4:12 in the above code
Wo rufst du 'doSomething' an? Ist das dein ganzer Code? – Bergi
@Bergi Nein, das ist nicht mein ganzer Code, aber ich habe nur die Warnung im obigen Code bekommen. Ich werde 'DoSomething' nennen, wenn ich eine Datei lesen muss, z. 'doSomething ('../ test.png')' – CYB
Ich meinte damit, dass du 'doSomething' von einem Promise-Handler nennst, der nichts zurückgegeben hat. Ist das der gesamte Aufruf der Warnung? Es wäre hilfreich, wenn Sie den ganzen Code zeigen könnten. – Bergi