Как загрузить ресурс из относительного пути в модуле nodejs?

В одном из моих модулей NodeJS мне нужно получить доступ к файлу, который является частью модуля, в отдельной папке (для модульных тестов). Пробовал __dirname в вызывающем файле с относительным путем к этому файлу ресурса. Это работает при запуске из vscode, но не при выполнении npm test в терминале. В этом случае построенный путь находится на одном уровне. Как это может быть?

Я должен добавить, что я использую машинопись для кодирования и Mocha для модульных тестов.

Просто вход __filename немного помогает здесь. Это показывает, что в vscode исполняемый файл - это перенесенный файл JS, а в Mocha - исходный файл машинописи. Я бегу:

mocha --compilers ts:ts-node/register,tsx:ts-node/register

для моих тестов. Любая идея, как преодолеть это и убедиться, что используется правильный путь (кроме тестирования, если __filename заканчивается .ts)?

1 ответ

Решение

Ок, получается просто. Вместо того, чтобы запускать mocha с кодом ts, позвольте ему использовать переданный код. Требуется только пробный прогон перед тестированием:

  "scripts": {
    "prepublish": "tsc",
    "install": "tsc",
    "test": "tsc && mocha out/test"
  },
Другие вопросы по тегам