2016-05-23 5 views
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 
+0

どこで 'doSomething'を呼び出していますか?それはあなたのコード全体ですか? – Bergi

+0

@Bergiいいえ、私のコード全体ではありませんが、私は上記のコードで警告を受け取りました。私はファイルを読む必要があるときに 'doSomething'を呼び出します。 'doSomething( '../ test.png')' – CYB

+0

私は、何かを返さなかった約束ハンドラから 'doSomething'を呼び出すことを意味していました。それは警告の呼び出しスタック全体ですか?コード全体を表示できると便利です。 – Bergi

答えて

0

おかげ@Bergi私のコードは以下の通りです

use.login().then((result) => { 
    console.log(result); 
    doSomething('../test.png'); 
    return null; // Add this line to make promise return anything, then the warning gone 
}); 
関連する問題