我在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中,它运作正常。
答案 0 :(得分:0)
我忘了()
require('./lib/pm2')();