Отображение пути с машинописью не работает с тестером огурца - PullRequest
1 голос
/ 22 апреля 2019

При запуске cucumber-js с моим проектом машинописного текста не удается переназначить путь. Использование относительных путей прекрасно, но непростительно безобразно. Например. import ... from "@src/..." не работает, а import ... from "../../../foo.ts" работает нормально.

Мой проект выглядит примерно так:

package.json
tsconfig.json
src/
  **/*.ts

Внутри tsconfig.json, я указываю пути переназначения:

  "paths": {
    "@src/*": [
      "src/*"
    ],
    "*": [
      "node_modules/*",
      "src/types/*"
    ]

Моя командная строка выглядит так:

cucumber-js 'src/**/*.feature' --require-module ts-node/register --require 'src/**/*.steps.ts' --format-options '{"snippetInterface": "async-await"}' --format json:reports/cucumber-report.json --format summary --logLevel=error 

И трассировка стека:

Error: Cannot find module '@src/context/Bar'
  at Function.Module._resolveFilename (module.js:513:15)
  at Function.Module._load (module.js:463:25)
  at Module.require (module.js:556:17)
  at require (internal/module.js:11:18)
  at Object.<anonymous> (.../foo.steps.ts:4:1)
  at Module._compile (module.js:612:30)
  at Module.m._compile (.../node_modules/ts-node/src/index.ts:414:23)
  at Module._extensions..js (module.js:623:10)
  at Object.require.extensions.(anonymous function) [as .ts] (.../node_modules/ts-node/src/index.ts:417:12)
  at Module.load (module.js:531:32)
  at tryModuleLoad (module.js:494:12)
  at Function.Module._load (module.js:486:3)
  at Module.require (module.js:556:17)
  at require (internal/module.js:11:18)
  at supportCodePaths.forEach.codePath (.../node_modules/cucumber/lib/cli/index.js:142:42)

Отображение пути просто не работает в этом контексте - в частности, cucumber-js. Что я делаю неправильно? Я перетасовал аргументы CLI, файлы, не повезло. Помогите ... пожалуйста?

1 Ответ

2 голосов
/ 23 апреля 2019

В проекте не было ничего плохого, но огурец не знал о механизме сопоставления путей, так как --require-module ts-node/register предоставляет языковые привязки, но не обладает необходимым интеллектом разрешения пути.

Для этого вам нужно: --require-module tsconfig-paths/register

Установить tsconfig-paths

npm install --save-dev tsconfig-paths

Зарегистрировать модуль

./node_modules/.bin/cucumber-js ... \
   --require-module ts-node/register \
   --require-module tsconfig-paths/register \
   ...

Тогда испытайте великолепный успех теста!

...