Я работаю над проектом NodeJS (v. 8.12.0, EcmaScript 6), структура проекта которого похожа на:
project_root/
src/
utils/
protocol_messages/
helpers.js
tests/
unit/
utils/
protocol_messages/
helpers.js
Я пишу тесты, используя Mocha в качестве каркаса тестов.
Вопрос
Как правильно импортировать тестируемый модуль в helpers.js
в tests/unit/utils/protocol_messages/
?
Чтобы уточнить:
Я хочу избежать относительного пути в: require('../../../../../src/utils/protocol_messages/helpers')
.
Это работает, но это уродливо, и если структура проекта изменится, мне также придется переписать импорт тестов.
(Я новичок в Javascript, поэтому могу ошибаться в нескольких вещах.)
Обновление
Решения, представленные в этот вопрос :
require.main.require
: в комментарии к этот ответ , "Это решение не будет работать, если код покрыт модульными тестами, такими как тест Мокка". - Извлечение моих утилит в модуль узла не имеет смысла для меня, так как код очень специфичен для приложения.
- Наличие дополнительного
node_modules
под моим src/
корневым каталогом проекта NodeJS, похоже, не имеет смысла. - Использование транспортера Javascript, когда я использую только функции, доступные в NodeJSи написание проектов CommonJS кажется излишним.
Если я ошибаюсь по любому из вышеперечисленных пунктов, пожалуйста, укажите это, поскольку я в растерянности.Мне кажется, что NodeJS не предоставляет собственный способ импорта модулей CommonJS с абсолютными путями.