. Тонкая разница заключается в том, как объекты передаются по ссылке в JavaScript.
exports
и module.exports
оба указывают на тот же объект. exports
является переменной, а module.exports
является атрибутом объекта модуля.
Скажем, я пишу что-то вроде этого:
exports = {a:1};
module.exports = {b:12};
exports
и module.exports
сейчас указывают на разные объекты. Изменение экспорта больше не изменяет module.exports.
Когда функция импорта проверяет module.exports
, она получает {b:12}
Я понял корень проблемы.
На JVisualVM я видел, что все потоки были заблокированы друг другом, но я не знал, почему. Теперь все ясно - я использую system.out.println () в качестве операции блока, но потоки не могут использовать ее одновременно, консоль заблокирована.
Я изменил вывод консоли на вывод файла (используйте имя потока в качестве имени файла для предотвращения блокировки) и снова запустите приложение. Теперь это работа, как и ожидалось.
Глупая ошибка, но я надеюсь, она кому-нибудь пригодится:)