为什么 require() 在交互式 shell 中返回 `{}`?
Why is require() returning `{}` in the interactive shell?
在终端中,我导航到包含文件 WordManager.js
的目录。从那里,我输入 node
进入交互式 shell,然后输入 require("./WordManager.js")
。结果是{}
。 WordManager.js
的内容是
class WordManager
{
// ...
}
我在网上发现了关于我应该如何导出的相互矛盾的信息,但我已经尝试了所有可能的方法,但没有任何效果。我试过exports.WordManager = class WordManager { ... }
,我试过module.exports.WordManager
,我试过export default
...
如何获得我正在寻找的行为 - 从交互式 shell 访问 WordManager class?
使用 Node 时,您必须声明模块的导出。
例如,在您的文件中,为了导出 WordManager
,您需要将其分配给 module.exports
:
class WordManager {
// ...
}
module.exports = WordManager
require()
将 return 来自所需模块的 module.exports
的值。请注意,如果要导出多个值,可以通过将它们作为属性附加到 module.exports
:
来实现
class WordManager {
// ...
}
class SpellChecker {
// ...
}
module.exports.WordManager = WordManager
module.exports.SpellChecker = SpellChecker
这在导出多个导出时可能会有点冗长,因此 module.exports
在模块范围内被别名为 exports
,因此您可以改为执行以下操作:
exports.WordManager = WordManager
exports.SpellChecker = SpellChecker
警告,exports
可以被覆盖但不会更新值或 module.exports
因此以下内容将不起作用:
// Does not work
exports = WordManager
希望对您有所帮助。
在终端中,我导航到包含文件 WordManager.js
的目录。从那里,我输入 node
进入交互式 shell,然后输入 require("./WordManager.js")
。结果是{}
。 WordManager.js
的内容是
class WordManager
{
// ...
}
我在网上发现了关于我应该如何导出的相互矛盾的信息,但我已经尝试了所有可能的方法,但没有任何效果。我试过exports.WordManager = class WordManager { ... }
,我试过module.exports.WordManager
,我试过export default
...
如何获得我正在寻找的行为 - 从交互式 shell 访问 WordManager class?
使用 Node 时,您必须声明模块的导出。
例如,在您的文件中,为了导出 WordManager
,您需要将其分配给 module.exports
:
class WordManager {
// ...
}
module.exports = WordManager
require()
将 return 来自所需模块的 module.exports
的值。请注意,如果要导出多个值,可以通过将它们作为属性附加到 module.exports
:
class WordManager {
// ...
}
class SpellChecker {
// ...
}
module.exports.WordManager = WordManager
module.exports.SpellChecker = SpellChecker
这在导出多个导出时可能会有点冗长,因此 module.exports
在模块范围内被别名为 exports
,因此您可以改为执行以下操作:
exports.WordManager = WordManager
exports.SpellChecker = SpellChecker
警告,exports
可以被覆盖但不会更新值或 module.exports
因此以下内容将不起作用:
// Does not work
exports = WordManager
希望对您有所帮助。