2
私はbluebird
を私のアプリで使用していて、私のコードをes5にコンパイルするためにbabelを使用しています。しかし、私はいつもこの警告を受けて、プロミスのすべての部分がreturn
値であることを確認しました。ここでハンドブックで約束が作成されましたが、青い鳥でそれから返されませんでした
は私のコードです:エラーメッセージの
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)
))
));
}
詳細:私は私が変更した後ので、警告は消えdoSomething
を呼び出す約束スタックをチェックしなかったことを
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
どこで 'doSomething'を呼び出していますか?それはあなたのコード全体ですか? – Bergi
@Bergiいいえ、私のコード全体ではありませんが、私は上記のコードで警告を受け取りました。私はファイルを読む必要があるときに 'doSomething'を呼び出します。 'doSomething( '../ test.png')' – CYB
私は、何かを返さなかった約束ハンドラから 'doSomething'を呼び出すことを意味していました。それは警告の呼び出しスタック全体ですか?コード全体を表示できると便利です。 – Bergi