Angular 7 Не могу найти способ заставить работать сопоставление путей tsconfig.json

Я начал проект angular 7, и я пытаюсь настроить «отображение пути» на angular.json, чтобы изменить способ импорта:

import { environment } from '../../../environments/environment';

к этому:

import { environment } from '@environments/environment';

Я сделал эту конфигурацию в файле tsconfig.json корневого уровня:

"compilerOptions": {
        "baseUrl": "src", // This must be specified if "paths" is.
         ...
        "paths": {
            "@app/*": ["app/*"],
            "@config/*": ["app/_config/*"],
            "@environments/*": ["environments/*"],
            "@shared/*": ["app/_shared/*"],
            "@helpers/*": ["helpers/*"]
        },
...

Но я также получаю эту ошибку на cli

ERROR in src/app/errors/not-foud/not-found.component.ts(2,29): error TS2307: Cannot find module '@environments/environment'

Есть что-то, что мне не хватает?


person Mikael Boff    schedule 22.02.2019    source источник


Ответы (4)


После повторных попыток я обнаружил, что проблема заключалась в одной из моих настроек vscode, которая называлась:"Typescript > Preferences: Import Module Specifier", для которой было задано значение < strong>"относительный" вместо "неотносительный". Изменив это, я смог решить проблему.

person Mikael Boff    schedule 27.02.2019

Протестировано с угловым 9 RC:

описание проекта

обновить оба места:

на базовом уровне проекта, чтобы сделать vscode счастливым:

// tsconfig.json
// .\
{
  ...
   "paths": {
      "@x/*": [
        "x/*"
      ],
      "@web-env/*": [
        "src/environments/*"
      ],
      "@web-app/*": [
        "./projects/web/src/app/*"
      ],
    }
  ...
}

внутри дочернего проекта обновите это, чтобы сделать cli счастливым:

// app.tsconfig.json
// .\projects\web\tsconfig.app.json
{
  ...
  "baseUrl": "./",
  "paths": {
    "@web-env/*": [
      "src/environments/*"
    ],
    "@web-app/*": [
      "src/app/*"
    ],
  }
  ...
}
person Hiep Tran    schedule 20.01.2020

В моем случае это произошло потому, что для src\tsconfig.app.json также была определена карта paths. Компилятор TypeScript игнорировал компилятор в моем основном файле tsconfig. Я удалил это, и он начал работать.

person DigiBanks99    schedule 20.05.2020

Для себя я обнаружил, что мне нужно следующее:

"baseUrl": ".",
"paths": {
  "@my-company/my-module": ["./dist/@my-company/my-module"],
  "@my-company/my-module/*": ["./dist/@my-company/my-module/*"]
}

Так просто, не могу поверить, что я так долго пытался это понять

person Matthew Dolman    schedule 22.02.2021