2

はこの問題に続き、REPLノードが、私は非同期/へのサポートを追加したい

をノードAに待って待っています:https://github.com/nodejs/node/issues/8382

私はこの1つhttps://github.com/paulserraino/babel-replを使用することを試みたが、非同期suppportを待つ不足しています

私はノードREPL上のカスタムのevalにこのスニペットを追加することができますどのように

const awaitMatcher = /^(?:\s*(?:(?:let|var|const)\s)?\s*([^=]+)=\s*|^\s*)(await\s[\s\S]*)/; 
const asyncWrapper = (code, binder) => { 
    let assign = binder ? `root.${binder} = ` : ''; 
    return `(function(){ async function _wrap() { return ${assign}${code} } return _wrap();})()`; 
}; 

// match & transform 
const match = input.match(awaitMatcher); 
if(match) { 
    input = `${asyncWrapper(match[2], match[1])}`; 
} 

このスニペットを使用したいですか?ノードREPLで

例:

> const user = await User.findOne(); 
+0

普通のノード7のREPLを '--harmony'と一緒に使うのはどうですか? – estus

+0

ノード - ノード7のREPLが動作しない--harmony-async-await –

+0

さて、それはすべきです。ノードのバージョンを確認することをお勧めします。明らかに、 'await'は' async'関数の中にあるべきです。 – estus

答えて

1

考えコマンドが前処理であると はのawait構文外部非同期関数

このhttps://gist.github.com/princejwesley/a66d514d86ea174270210561c44b71baがある場合非同期関数でそれをラップは、最終的な解決策であります

+0

約束や結果を期待するべきでしょうか?あなたが一時停止して何とか再開する必要がある結果を得るまで、REPLはハングしませんが、afaik。それはサポートされていません、少なくとも 'repl.pause()'は私が終了しました。もう1つの問題:https://github.com/nodejs/node/issues/13209 – inf3rno

関連する問題