为什么require()在交互式shell中返回“ {}”?

时间:2018-08-25 16:01:20

标签: javascript node.js require node-modules

在终端中,我导航到包含文件WordManager.js的目录。从那里,我输入node进入交互式外壳,然后输入require("./WordManager.js")。结果为{}WordManager.js的内容是

class WordManager
{
    // ...
}

我在网上发现了有关我应该如何导出的确切信息,但是我尝试了所有可能的方法,但没有任何效果。我尝试过exports.WordManager = class WordManager { ... },我尝试过module.exports.WordManager,我尝试过export default ...

如何获得所需的行为-从交互式外壳访问WordManager类?

1 个答案:

答案 0 :(得分:0)

使用Node时,必须声明模块的导出。

例如,在您的文件中,要导出WordManager,您需要将其分配给module.exports

class WordManager {
    // ...
}

module.exports = WordManager

require()将从所需模块返回module.exports的值。请注意,如果要导出多个值,可以通过将它们作为属性附加到module.exports来实现:

class WordManager {
    // ...
}

class SpellChecker {
    // ...
}

module.exports.WordManager = WordManager
module.exports.SpellChecker = SpellChecker

导出多个导出时,这可能会有些罗y,因此module.exports在模块范围内被别名为exports,因此您可以执行以下操作:

exports.WordManager = WordManager
exports.SpellChecker = SpellChecker

警告语exports可以被覆盖,但不会更新值或module.exports,因此以下操作将不起作用:

// Does not work
exports = WordManager

希望有帮助。