Nx Angular — нет такого файла или каталога, откройте ‘d:…TheAppSourceAngular.Приложения / apps/app-client/src/environments/environment.prod.ts’

#angular #monorepo #nrwl-nx

#угловатый #монорепо #nrwl-nx

Вопрос:

Я потратил некоторое время на работу над проектом PowerShell для автоматизации некоторых сборок моих приложений на C # и Angular, основанных на @Nrwl NX monorepos. До этого все работало нормально, но когда я попробую простой:

 nx build --baseHref=/apps/admin/ --deployUrl=/apps/admin/ --watch 
 

Теперь я получаю сообщение об ошибке

 ENOENT: "no such file or directory, open 'd:ProjectsTheAppSourceAngular.Apps/apps/the-client/src/environments/environment.prod.ts'" 
 

Проблема: я предполагаю, что он ищет environment.prod.ts из-за раздела ReplaceFile, но поскольку я создаю в local dev, я бы подумал, что он вообще не должен выполнять замену.
Кроме того: он ищет файл среды APP-CLIENT, хотя я создаю приложение APP-ADMIN.

Некоторые моменты, которые могли вызвать проблемы во время моего проекта автоматизации сборки:

  1. Я переименовал все конфигурации приложения в workspace.json. Так, например, «production» стал «production-client1», который использует файл environment.prod.client1.ts при замене

    «Замены файлов»: [
    {
    «заменить»: «приложения / app-admin/src/ environments/environment.ts»,
    «с помощью»: «приложения / app-admin/src/environments/environment.prod.orgb.ts» }
    ],

  2. В 1) выше я упомянул файл environment.prod.client1.ts, который изначально является файлом environment.prod.ts. Поскольку в ошибке упоминается, что он не может найти этот файл, возможно, проблема либо здесь, либо в том, что я должен изменить какую-то дополнительную конфигурацию, чтобы заставить это работать?

Последнее замечание: мой командлет powershell вызывает следующую команду:

 nx build portfolio-client --deleteOutputPath=false --baseHref=/apps/client/ --deployUrl=/apps/client/ --configuration=staging-client-client1 
 

И это работает как шарм, как и приложение администратора и варианты для каждого клиента. Только во время сборки я сталкиваюсь с этими проблемами.

Правка 1:
Я создал фиктивные файлы для environment.prod.ts и environment.staging.ts в двух проектах типа «application», которые у меня есть, и это решило проблему. Эти файлы пустые, хотя я не уверен, почему сборка для Dev / local не просто работает с файлом environment.ts

Ответ №1:

Я нашел ответ в комментариях к следующей сообщенной проблеме GitHub: «Ошибка: ENOENT: нет такого файла или каталога» для удаленного файла # 3370

Все сводилось к тому, что файл Nrwl file-hasher.js использует хэши git, и поскольку я не зафиксировал эти изменения, он искал старое имя файла. Я решил эту проблему, разместив и зафиксировав все свои изменения в текущей ветке.

Если смотреть дальше, то это, похоже, ошибка, которая позже была исправлена в Nx 10.0.2 и выше, до которой мы еще не обновились.