Безуспешно пытаюсь развернуть приложение Angular 7 в Azure

#angular #azure #deployment

#angular #azure #развертывание

Вопрос:

Я пытаюсь развернуть обновленную версию моего приложения в Azure. У меня уже развернута версия Angular 4 (созданная с помощью оригинального CLI 1.2.7). По причинам, которые я не могу вспомнить, я решил создать новый проект с Angular CLI версии 7.3.4 для «обновления» до Angular 7.

Впервые я понял, что у меня может возникнуть проблема, когда я попытался связать новые проекты с github в моем существующем развертывании WebApps, но когда это не удалось, я решил попробовать это в автономной версии, чтобы не беспокоить пользователей.

Я могу успешно развернуть приложение в Центре развертывания, но при переходе на сайт я получаю эту ошибку:

У вас нет разрешения на просмотр этого каталога или страницы.

Это напомнило мне, что мне нужен файл Web.Config в соответствии с рекомендациями Angular:

 //NEW APP 
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
  

Это похоже, но не совпадает с файлом web.config, который у меня есть в моей рабочей версии:

 //OLD WORKING APP
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="AngularJS" stopProcessing="true">
          <match url="^(?!.*(.bundle.js|.bundle.map|.bundle.js.gz|.bundle.css|.bundle.css.gz|.png|.jpg|.ico)).*$" />
          <conditions logicalGrouping="MatchAll">
          </conditions>
          <action type="Rewrite" url="/"  appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
  

Естественно, я тоже пробовал это, и я получаю тот же результат.

Когда я проверяю структуру папок моего рабочего приложения и сравниваю его с новым приложением, я думаю, что именно в этом заключается проблема. Поскольку все мои файлы angular и мой web.config хранятся в ** dist{название приложения} ** но в моем рабочем приложении все файлы хранятся в папке wwwroot.

Новое приложение

wwwroot нового приложения

Старое рабочее приложение

wwwroot старого приложения

Есть идеи о том, как я могу это исправить, есть ли настройка приложения, которую я могу написать, чтобы указать Azure, где искать файлы?

Заранее спасибо

Ответ №1:

Во-первых, вам необходимо экспортировать и развернуть папку ‘dist’ в вашей службе приложений. Папки ‘dist’ достаточно для запуска вашего приложения Angular.

 ng build --base-href "/yourappname/" --prod
  

Создается папка dist и копируется папка dist в wwwroot yourappname. Я считаю, что вам может понадобиться index.html, index.htm или аналогичные страницы для начальной загрузки вашего приложения.

Попробуйте и дайте нам знать.

Комментарии:

1. Боюсь, не повезло, папка dist была экспортирована и развернута. Я также попытался переместить все мои угловые файлы из wwwroot / dist / {APP} / в wwwroot, но и там безуспешно. Сообщение об ошибке, которое я получаю в журналах потоковой передачи: HTTP Error 403.14 — Запрещено Веб-сервер настроен так, чтобы не отображать содержимое этого каталога. Наиболее вероятные причины: документ по умолчанию не настроен для запрошенного URL, а просмотр каталога на сервере не включен.

2. Просто переместите все файлы только из папки dist в папку целевого приложения.