co.wrap yield Promise throw TypeError:undefined不是函数

时间:2015-08-19 21:33:51

标签: javascript node.js promise es6-promise co

我在co.wrap中使用了Promise,但它抛出 TypeError:undefined不是函数(错误行是 yield pm2.connect(); )< / p>

app.js:

var app = koa();
app.init = co.wrap(function *(overwriteDB) {

  yield pm2.connect();

    koaConfig(app);

    app.server = app.listen(config.app.port);
      if (config.app.env !== 'test') {
        console.log('PM2 monitor listening on port ' + config.app.port);
      }
    });
  }

  if (!module.parent) {
    app.init().catch(function (err) {
      console.error(err.stack);
      process.exit(1);
    });
  }

在pm2.js中,我包裹了一个函数来返回一个Promise,代码如下:

var _ = PM2.prototype;

exports = module.exports = PM2;

function PM2() {
  debug("PM2");
  if (!(this instanceof PM2)) return new PM2;
  this.env = process.env.NODE_ENV || 'development';
};

_.connect = function() {
  debug('connect');
  return new Promise(function(resolve, reject) {
    pm2.connect(function(err) {
    if (err) reject(err);
    resolve();
  });
});

然后我尝试

co(function *() {
  yield pm2.connect();
  var res = yield pm2.list();
  console.log(res);
});
在app.js中

,它运作正常。

1 个答案:

答案 0 :(得分:0)

我忘了()

require('./lib/pm2')();