Проблема с окружением в Angular при попытке сборки

Когда я пытаюсь создать проект Angular, у меня возникает такая проблема:

Файл '/angular/src/environments/environment.ts' не является модулем

Я импортирую файл так:

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

My tsconfig.json :

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

В моей папке среды у меня есть файлы: environment.ts, environment.prod.ts, environment.dev.ts.

Я использую NODE_VERSION = 10, NG_CLI_VERSION = 8

Мой angular.json, build.configurations для разработчиков:

"dev": {
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "aot": true,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true,
          "serviceWorker": true
        }

Команда для сборки: "build": "ng build --configuration=dev --aot",

Помогите, пожалуйста. Заранее спасибо !


person klsdskldsd    schedule 05.05.2020    source источник
comment
Какую команду вы используете для компиляции кода? Кроме того, вы не думали об обновлении до Angular 9 или 10?   -  person Akxe    schedule 05.05.2020
comment
команда: ng build --configuration=dev --aot. Я не могу сейчас обновить   -  person klsdskldsd    schedule 05.05.2020
comment
Тогда нам понадобится angular.json   -  person Akxe    schedule 05.05.2020
comment
В какой-то момент cli начал требовать включения всех кандидатов на замену окружения в tsconfig (или angular.json не может запомнить), чтобы заставить его работать. Уже недостаточно просто иметь environment.xxx.ts в каталоге env.   -  person Antoniossss    schedule 05.05.2020
comment
@Antoniossss Я могу подтвердить, что это не так. По крайней мере, не для Angular 9 ...   -  person Akxe    schedule 05.05.2020
comment
Покажите нам содержимое ваших файлов среды, environment.dev.ts, вероятно, никогда не упоминается, а не по умолчанию config для angular.   -  person Akxe    schedule 05.05.2020
comment
Содержание environment.ts?   -  person klsdskldsd    schedule 05.05.2020
comment
@Akxe Я отредактировал свой вопрос с помощью angular.json, сборки конфигурации для dev   -  person klsdskldsd    schedule 05.05.2020
comment
попробуйте абсолютный путь import { environment } from 'src/environments/environment'; или import { environment } from 'environments/environment'; в зависимости от вашего baseHref   -  person Steve    schedule 05.05.2020


Ответы (1)


Angular по умолчанию настраивает только angular.json производственную среду для замены environement.ts файла. Он использует эту часть angular.json.

"configurations": {
   "production":{
      "fileReplacements":[
         {
            "replace":"src/environments/environment.ts",
            "with":"src/environments/environment.prod.ts"
         }
      ],
      "rest": ...
   }
}

Не для того, чтобы разработчик использовал environment.dev.ts, вам также нужно добавить часть fileReplacements в сборку разработчика.

"fileReplacements":[
  {
    "replace":"src/environments/environment.ts",
    "with":"src/environments/environment.dev.ts"
  }
]

Или поместите свою конфигурацию разработчика в конфигурацию без пост-исправления.

person Akxe    schedule 05.05.2020