我有一门用Javascript ES6编写的类。当我尝试执行nodemon命令时,我总是会看到此错误TypeError: Classconstructor Client cannot be invoked without 'new'
nodemon
TypeError: Classconstructor Client cannot be invoked without 'new'
完整错误如下所述:
/Users/akshaysood/Blockchain/fabricSDK/dist/application/Transaction.js:45 return (0, _possibleConstructorReturn3.default)(this, (FBClient.__proto__ || (0, _getPrototypeOf2.default)(FBClient)).call(this, props)); ^ TypeError: Class constructor Client cannot be invoked without 'new' at new FBClient (/Users/akshaysood/Blockchain/fabricSDK/dist/application/Transaction.js:45:127) at Object.<anonymous> (/Users/akshaysood/Blockchain/fabricSDK/dist/application/Transaction.js:195:14) at Module._compile (module.js:641:30) at Object.Module._extensions..js (module.js:652:10) at Module.load (module.js:560:32) at tryModuleLoad (module.js:503:12) at Function.Module._load (module.js:495:3) at Module.require (module.js:585:17) at require (internal/module.js:11:18) at Object.<anonymous> (/Users/akshaysood/Blockchain/fabricSDK/dist/routes/users.js:11:20)
我想做的是,我创建了一个类,然后创建了该类的实例。然后,我试图导出该变量。
类结构定义如下:
class FBClient extends FabricClient{ constructor(props){ super(props); } <<< FUNCTIONS >>> }
我如何尝试导出变量->
var client = new FBClient(); client.loadFromConfig(config); export default client = client;
您可以在此处找到完整的代码> https://hastebin.com/kecacenita.js Babel生成的代码> https://hastebin.com/fabewecumo.js
问题在于该类扩展了本机ES6类,并通过Babel转换为ES5。转译的类至少在没有其他措施的情况下不能扩展本机类。
class TranspiledFoo extends NativeBar { constructor() { super(); } }
导致类似
function TranspiledFoo() { var _this = NativeBar.call(this) || this; return _this; } // prototypically inherit from NativeBar
由于ES6类应该只调用new,NativeBar.call在错误的结果。
new
NativeBar.call
ES6类在任何最新的Node版本中均受支持,不应进行编译。es2015应该从Babel配置中排除,最好使用env预设设置为nodetarget。
es2015
env
node