Разверните рендеринг на стороне сервера Angular7 в службу приложений Azure - PullRequest
0 голосов
/ 30 января 2019

У меня есть приложение Angular7 со встроенным рендерингом ServerSide (с angular universal), которое заключено в приложение .Net Core, и я не могу выполнить развертывание в службе приложений Azure.

Когда я выполняюПубликация через Visual Studio, все сборки выполняются правильно, создается папка dist с

/dist
   /browser
   /server
   server.js

, но затем происходит сбой публикации при копировании файлов из node_modules в папку obj.

Невозможно скопировать файл "C: \ Work \ Repos \ сайт \ msSite \ ClientApp \ node_modules.cache \ terser-WebPack-плагин \ контент-v2 \ sha512 \ 8е \ 66 \ f49339db5275a13ef193d46e9a87afb770d173d93548f10a78 a493694695c748602741bec0e9f1f2c503f2d6e48f8034f4cc29da83d689f2f631af6938ba" в «C: \ Work\ Repos \ мы bsite \ msSite \ OBJ \ Release \ netcoreapp2.1 \ PubTmp \ Out \ ClientApp \ node_modules.cache \ terser-WebPack-плагин \ контент-v2 \ sha512 \ 8е \ 66 \ f49339db5275a13ef193d46e9a87afb770d173d93548f10a78a493694695c748602741bec0e9f1f2c503f2d6e4 8f8034f4cc29da83d689f2f631af6938ba».Указанный путь, имя файла или оба являются слишком длинными.Полное имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов.

Как я понимаю, поскольку отрисовка на стороне сервера необходима для узлов_модулей, но как я могу решитьэта проблема?

это часть файла .csproj

<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --prod --aot" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " />

<!-- Include the newly-built files in the publish output -->
<ItemGroup>
  <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
  <DistFiles Include="$(SpaRoot)node_modules\**" Condition="'$(BuildServerSideRenderer)' == 'true'" />
  <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
    <RelativePath>%(DistFiles.Identity)</RelativePath>
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  </ResolvedFileToPublish>
</ItemGroup>

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Существует два решения этой проблемы: 1. Не развертывать кеш node_modules.CI / CD займет много времени.

<ItemGroup>
 <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
 <DistFiles
   Include="$(SpaRoot)node_modules\**"
   Exclude="$(SpaRoot)node_modules\.cache\**; $(SpaRoot)node_modules.cache\**"
   Condition="'$(BuildServerSideRenderer)' == 'true'" />
 <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
   <RelativePath>%(DistFiles.Identity)</RelativePath>
   <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
 </ResolvedFileToPublish>
</ItemGroup>
Разверните package.json и заблокируйте файл вместо node_modules.Это намного быстрее, потому что вам не нужно копировать node_modules с большим количеством пакетов, включая dev.CI / CD должен устанавливать пакеты узлов.В примере используется пряжа.
<ItemGroup>
 <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
 <DistFiles
   Include="$(SpaRoot)package.json; $(SpaRoot)yarn.lock;"
   Condition="'$(BuildServerSideRenderer)' == 'true'" />
 <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
   <RelativePath>%(DistFiles.Identity)</RelativePath>
   <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
 </ResolvedFileToPublish>
</ItemGroup>
0 голосов
/ 14 февраля 2019

Ограничение пути в 260 символов - это ограничение в ОС Windows .Вам нужно будет уменьшить длину пути для этого файла, чтобы успешно создать и опубликовать.Есть несколько способов сделать это.

  1. Вы можете сохранить проект в папке ближе к корню диска.
  2. Вы можете уменьшить длину имени файла.
  3. Вы можете настроить вывод сборки так, чтобы он располагался где-то ближе к корню диска.

Чтобы изменить папку вывода сборки, щелкните правой кнопкой мыши проект и откройте свойства: Image showing the right-click menu for a project with the properties option highlightes

В окне свойств убедитесь, что вы редактируете конфигурацию, которую вы используете для публикации (обычно Release), и откройте вкладку Build.В нижней части окна вы можете переопределить путь сборки по умолчанию для другой папки: Image of the build properties tab with a custom build output location set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...