没有'new'就不能调用类构造函数

jab*_*key 6 mongodb node.js ecmascript-6

刚升级到节点4.1.2并使用Mongorito(使用ES6)访问Mongo,我得到了这个:

型号文件:

var Mongorito = require('mongorito');
var Model = Mongorito.Model;
var config = require('../config/config');
Mongorito.connect(config.mongo.url);

class Listing extends Model {}

module.exports = Listing;
Run Code Online (Sandbox Code Playgroud)

我包括它:

var Listing = require('../models/listing');
var listing = yield Listing.where('cacheKey', key).findOne();
Run Code Online (Sandbox Code Playgroud)
TypeError: Class constructors cannot be invoked without 'new'
      at Listing.Model (/node_modules/mongorito/lib/mongorito.js:140:15)
      at new Listing (/models/listing.js:7:14)
      at Query.find (/node_modules/mongorito/lib/query.js:355:21)
      at [object Generator].next (native)
      at onFulfilled (/node_modules/koa/node_modules/co/index.js:65:19)
      at run (/node_modules/babel/node_modules/babel-core/node_modules/core-js/modules/es6.promise.js:89:39)
      at /node_modules/babel/node_modules/babel-core/node_modules/core-js/modules/es6.promise.js:100:28
      at flush (/node_modules/babel/node_modules/babel-core/node_modules/core-js/modules/$.microtask.js:17:13)
      at doNTCallback0 (node.js:408:9)
      at process._tickCallback (node.js:337:13)
Run Code Online (Sandbox Code Playgroud)

log*_*yth 17

这是因为Babel的转换ES6类不能用于扩展真正的ES6类.如果你想使用mongorito,你必须将Babel的es6.classes变换列入黑名单,这样你的Listing类也是一个原生的ES6类.