如何使生成器功能与Hapi JS一起使用

时间:2016-01-13 10:44:22

标签: node.js ecmascript-6 hapijs

我用nvm安装了各种node.js版本并尝试了-harmony标志,以使生成器函数与yield关键字一起工作,但是当服务器启动时我遇到了各种错误。其中一个在下面:

/home/ubuntu/workspace/node_modules/hapi/node_modules/joi/lib/object.js:310                                                                                                           
            throw castErr;                                                                                                                                                            
                  ^                                                                                                                                                                   
TypeError: Cannot read property '_items' of undefined                                                                                                                                 
    at /home/ubuntu/workspace/node_modules/hapi/node_modules/topo/lib/index.js:39:22                                                                                                  
    at Array.forEach (native)                                                                                                                                                         
    at internals.Topo.add (/home/ubuntu/workspace/node_modules/hapi/node_modules/topo/lib/index.js:36:24)                                                                             
    at internals.Object.keys (/home/ubuntu/workspace/node_modules/hapi/node_modules/joi/lib/object.js:301:18)                                                                         
    at internals.root.root.object (/home/ubuntu/workspace/node_modules/hapi/node_modules/joi/lib/index.js:71:72)                                                                      
    at Object.<anonymous> (/home/ubuntu/workspace/node_modules/hapi/node_modules/catbox/lib/policy.js:255:24)                                                                         
    at Module._compile (module.js:460:26)                                                                                                                                             
    at Object.Module._extensions..js (module.js:478:10)                                                                                                                               
    at Module.load (module.js:355:32)                                                                                                                                                 
    at Function.Module._load (module.js:310:12)  

使用yield关键字需要做些什么特别的事情吗?

更新:我将nodejs更新为5.4.1,错误消失了。但我不能使用yield函数。

这是一段代码:

var nodes = yield Db.node.find({ type: 'root' });
return reply.success(nodes);

这是我得到的错误:

var nodes = yield Db.node.find({ type: 'root' });                                                                                                                              
                      ^^                                                                                                                                                              

SyntaxError: Unexpected identifier 

1 个答案:

答案 0 :(得分:0)

您需要一个hapi插件,允许您将生成器作为处理程序运行。像https://github.com/ide/hapi-async-handler

这样的东西