【发布时间】:2017-05-19 23:53:40
【问题描述】:
我想添加对 async/await 到节点 repl 的支持
关注这个问题:https://github.com/nodejs/node/issues/8382
我尝试使用这个https://github.com/paulserraino/babel-repl,但它缺少异步等待支持
我想用这个sn-p
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])}`;
}
如何将此 sn-p 添加到节点 repl 上的自定义 eval 中?
节点repl中的示例:
> const user = await User.findOne();
【问题讨论】:
-
使用普通的 Node 7 REPL 和
--harmony怎么样? -
node --harmony-async-await 在 Node 7 REPL 上不起作用
-
嗯,应该的。我建议检查节点版本。显然,
await应该在async函数内部。 -
你是问怎么写补丁解决github.com/nodejs/node/issues/13209?
标签: node.js async-await read-eval-print-loop ecmascript-2017