Команда ng build генерирует index.csr.html вместо index.html

Раньше я запускал ng build для создания сборки моего приложения Angular 18. Он всегда работал нормально, создавая файл index.html. Однако сегодня вместо этого внезапно начал генерироваться файл index.csr.html, и я не могу понять, почему.

Я использую хостинг Firebase и действие GitHub для автоматического развертывания сборки. Поскольку он не генерирует index.html, развертывание завершается неудачей. Все шло нормально до вчерашнего дня.

Чтобы обойти эту проблему, мне приходится вручную переименовывать index.csr.html в index.html, и тогда развертывание работает нормально.

Ниже приведен вывод команды ng build.

Application bundle generation complete. [15.184 seconds]

▲ [WARNING] Module 'undici' used by 'node_modules/@firebase/auth-compat/dist/esm/index.node.esm.js' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.dev/tools/cli/build#configuring-commonjs-dependencies


▲ [WARNING] Module 'undici' used by 'node_modules/@firebase/auth/dist/node-esm/internal.js' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.dev/tools/cli/build#configuring-commonjs-dependencies


▲ [WARNING] Module 'faye-websocket' used by 'node_modules/@firebase/database/dist/node-esm/index.node.esm.js' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.dev/tools/cli/build#configuring-commonjs-dependencies
csr — известный термин в angular и означает «рендеринг на стороне клиента». Во-первых, это вам не поможет, но: есть ли что-то в конфигурации, которую вы изменили? Какие-нибудь обновления npm или что-то в этом роде?
jaheraho 03.07.2024 09:16

После включения SSR, index.html содержит предварительно обработанную страницу. Кроме того, генерируется index.csr.html, который включает только скрипты и стили без какого-либо предварительно обработанного контента. Используете ли вы пререндеринг/SSR в своем проекте?

JSON Derulo 03.07.2024 09:36

Я только что проверил, у меня CSR включен, но он всегда был включен, ничего конкретного не изменилось. Я сделал только одно — создал сборку --prod, и это могло стать поворотным моментом. Но как мне это исправить?

Prabhas Kumra 03.07.2024 22:38
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
3
269
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Сформируйте исходный код CLI :

  /**
   * If SSR is activated, create a distinct entry file for the `index.html`.
   * This is necessary because numerous server/cloud providers automatically serve the `index.html` as a static file
   * if it exists (handling SSG).
   * For instance, accessing `foo.com/` would lead to `foo.com/index.html` being served instead of hitting the server.
   */
  const indexBaseName = path.basename(options.index);
  indexOutput = ssrOptions && indexBaseName === 'index.html' ? 'index.csr.html' : indexBaseName;

index.csr.html создается, когда у вас включен SSR, но он по-прежнему дает возможность использовать так называемый «Рендеринг на стороне клиента», который представляет собой обычное SPA-приложение.

Итак, как мне сказать, чтобы он генерировал index.html, а не index.csr.html?

Prabhas Kumra 03.07.2024 22:37
Ответ принят как подходящий

Я столкнулся с аналогичной проблемой. Я понял, что для создания простого Index.html нужно отключить SSR. Я изменил два поля в angular.json

`    "prerender": false,
     "ssr": false`

Отключите SSR, как предложил Андрей Павлов, если вы его не используете, или вручную переименуйте index.csr.html в index.html.

Другие вопросы по теме