Javascript TypeError:不是构造函数
我只是将代码用作有关JavaScript类的学习练习 代码生成“TypeError:SimpleLogger不是构造函数”。该类似乎可以导出,但我无法在main.js文件中实例化它 我减少了代码以显示问题。我想知道是否有人能发现这个问题。谢谢Javascript TypeError:不是构造函数,javascript,node.js,electron,Javascript,Node.js,Electron,我只是将代码用作有关JavaScript类的学习练习 代码生成“TypeError:SimpleLogger不是构造函数”。该类似乎可以导出,但我无法在main.js文件中实例化它 我减少了代码以显示问题。我想知道是否有人能发现这个问题。谢谢 // In simplelogger.js "use strict"; class SimpleLogger { constructor(level) { this.level = level || DEFAULT_LEVEL;
// In simplelogger.js
"use strict";
class SimpleLogger {
constructor(level) {
this.level = level || DEFAULT_LEVEL;
}
// .... other methods
}
const DEFAULT_LEVEL = 'info';
module.exports = {
SimpleLogger,
DEFAULT_LEVEL
}
// In main.js
"use strict";
const SimpleLogger = require('./simplelogger.js');
let log = new SimpleLogger('info');
错误出现在最后一行。您导出的对象同时包含
SimpleLogger
和DEFAULT\u LEVEL
,因此要在main.js中使用它,您需要像这样正确地引用它
const SimpleLogger = require('./simplelogger.js').SimpleLogger;
let log = new SimpleLogger('info');
如果您只想导出SimpleLogger
,可以这样更改导出
module.exports = SimpleLogger
然后,您可以像在代码中一样要求
SimpleLogger
。您不需要使用strict
。您导出的对象有两个键(SimpleLogger和默认\u级别);日志级别的常量可能属于SimpleLogger,并以默认值导出该类。@Geuis使用“use strict”
有什么问题?通常,在代码中包含这一点是一种很好的做法,只要它不是在顶级运行的。@kevinji实际上,您可能是对的。在过去的几年里,我一直在专门使用es6+,在模块级启用了严格模式,并且是规范的一部分。因此,这里不需要严格模式。我在类定义之后看到了“use strict”,而不是在模块的顶部。在位置上是否有偏好,或者我是否应该完全不使用它?这是固定的。非常感谢。