TS-узел с Mocha не использует TS_NODE_PROJECT - PullRequest
0 голосов
/ 04 февраля 2019

У меня проблемы с использованием переменной env TS_NODE_PROJECT, когда ts-node используется для тестирования с использованием Mocha.

Структура проекта выглядит следующим образом:

src/
  main_test.ts
  tsconfig.json
package.json

InВ моем тесте я хочу использовать асинхронную функцию, которая требует "lib": ["es2018"] в качестве опции компиляции.

// src/main_test.ts
describe('', () => {
    it('test', () => {
        (async function() {})()
    });
});

// src/tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "lib": ["es2018"]
  },
  "exclude": [
    "../node_modules"
  ]
}

Для запуска теста я использую эту команду, но она приводит к ошибке:

TS_NODE_PROJECT='src' && mocha --require ts-node/register src/*_test.ts
# TSError: ⨯ Unable to compile TypeScript:
# error TS2468: Cannot find global value 'Promise'.
# src/main_test.ts(3,10): error TS2705: An async function or method in ES5/ES3 requires the 'Promise' constructor.  Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option.

Это означает, что src/tsconfig.json не используется.Согласно Переопределению `tsconfig.json` для ts-узла в mocha и документации ts-node, команда должна передать правильный tsconfig.json путь к ts-node.

Moving src/tsconfig.json для проецирования в каталог и выполнение одной и той же команды приводит к успешному выполнению теста.Как я могу передать путь tsconfig.json к ts-node, чтобы тест правильно компилировался?

1 Ответ

0 голосов
/ 05 февраля 2019

О.Как неловко ...

TS_NODE_PROJECT='src/tsconfig.json' mocha --require ts-node/register src/*_test.ts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...