私はノード4.5+とブルーバードを使用しています。私はthen
で使用する次のコードを持っている:ブルーバードの約束は未定義ですか?
var checkdir = function(directory) {
return new Promise(function(resolve, reject) {
fs.statAsync(directory).then(function() {
resolve(true);
}).catch(function(err) {
if(err.code === 'ENOENT') {
fs.mkdirAsync(directory).then(function() {
resolve(true);
}).catch(function() {
reject(new Error('Can not create folder'));
});
} else {
reject(new Error('Unknown fs stat error: ' + err));
}
});
});
};
Async
機能がfs-extra-promise
モジュールからです。しかし、この関数を使用しようとすると、私はUnhandled rejection Error: Unknown error: TypeError: Cannot read property 'then' of undefined
を取得します。
呼び出す:
checkdir(dir).then(function() {
...
}).catch(function(err) {
reject(new Error('Unknown error: ' + err));
});
はここに何が間違っているのですか?
これは変ですが、あなたのコードはブルーバードなしのスニペットで検索されます。あなたはどのようにライブラリを実装していますか? – Randy
を参照してください。http://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-i-avoid-it –
どのような指示(スタックトレース)の '。その後、エラーは参照していますか? –