Исправьте ошибку «модуль не найден» раз и навсегда.

Вы когда-нибудь получали Nest can’t resolve dependencies ошибки при выполнении тестов в Nest.js?

Когда вы создаете проект с помощью интерфейса командной строки Nest, ваш tsconfig.json будет выглядеть примерно так:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true
  }
}

Проблема с этой конфигурацией заключается в том, что в Visual Studio Code, когда вы используете автоматический импорт, он будет генерировать относительный путь, начиная с папки src/.

При выполнении тестов с помощью Nest.js (используя Jest ниже) вы часто будете получать ошибки, указывающие на то, что Nest не может разрешить (существующие) модули.

Решение заключается в использовании относительного пути из текущего файла, в который импортируются модули. Например:

// instead of
import { UserService } for 'src/services/user.service';
// use
import { UserService } for '../service/user.service';

Теперь Nest.js сможет находить модули при запуске тестов.

Чтобы избежать получения путей импорта, начинающихся с src/, при автоматическом импорте в код vs, просто измените tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",  <<===== remove this line
    "incremental": true,
    "skipLibCheck": true
  }
}

А также не забудьте установить для свойства strict значение true на всякий случай:

{
  ...
  "strict": true
}






Дополнительные материалы на plainenglish.io