koa.js中的未知错误

时间:2014-12-07 08:18:13

标签: node.js mongodb mongoose promise koa

我正在基于linux的wordpress中处理node.js项目。就在今天,我需要在OSX中运行它。

一切安装完美。但是,虽然试图运行应用程序得到了这种没有理由的错误。是否有人面临同样的问题,如果是的话,什么是solutuon?

TypeError: #<Promise> is not a function
  at Array.forEach (native)
  at Object.exports.indexAction (/Users/nixon/Documents/node/madefreshly-3/application/controllers/dashboardController.js:26:24)
  at GeneratorFunctionPrototype.next (native)
  at Object.dispatch (/Users/nixon/Documents/node/madefreshly-3/node_modules/koa-router/lib/router.js:96:44)
  at GeneratorFunctionPrototype.next (native)
  at Object.next (/Users/nixon/Documents/node/madefreshly-3/node_modules/koa/node_modules/co/index.js:74:21)
  at /Users/nixon/Documents/node/madefreshly-3/node_modules/koa/node_modules/co/index.js:93:18
  at /Users/nixon/Documents/node/madefreshly-3/node_modules/koa/node_modules/co/index.js:224:7
  at in_the_handler (/Users/nixon/Documents/node/madefreshly-3/node_modules/mongoose/node_modules/mpromise/lib/promise.js:237:18)
  at process._tickCallback (node.js:372:11)

dashboard.js的代码行

24      var raw7DayTotalSale = yield ships.ship.find({"ship_shipped": {'$gt' : last7Day}, store_id: this.session.loggedId}).where('ship_paid').ne('0').exec();
25      var last7dayTotalSale = 0;
26      raw7DayTotalSale.forEach(co(function* (item) {
27           last7dayTotalSale += Number(item.ship_total);
28        }));

1 个答案:

答案 0 :(得分:0)

最新版本的co返回承诺而不是函数

所以.forEach()试图将承诺称为函数

我想你在每台机器上都有不同版本的co

  

co@4.0.0已经发布,它依赖于承诺。现在是一个   迈向ES7 async / await的踏脚石。主要的API更改是如何   调用co()。之前,co返回了一个&#34; thunk&#34;,然后你打电话   带有可选参数的回调。现在,co()返回一个promise。

https://github.com/tj/co#co-v4