При запуске сборки ng index.html ничего не делает?

У меня есть проект Angular 5, и он отлично работает при запуске ng serve, но я хочу отправить его дизайнеру для дальнейшей работы над ним. После запуска ng build открытие index.html приводит к совершенно пустой странице.

Есть ли что-то еще, что мне нужно сделать? В моей папке environment.ts у меня установлено значение true. Пожалуйста, дайте мне знать, если есть более простой способ отправить симуляцию или как это исправить, спасибо!


person Betzel11    schedule 07.08.2018    source источник
comment
Вы можете поделиться дополнительной ошибкой, которую вы получили?   -  person ninjadev1030    schedule 07.08.2018
comment
У меня нет ошибки, html-файл просто пустой. Мой проект angular 5 состоит из разных страниц, и каждая страница состоит из компонентов. ng serve отлично работает с веб-сайтом и переключается между страницами, но что касается сборки ng, когда я открываю файл index.html, который он создает в моей папке dist, он просто открывает пустую веб-страницу вместо моего веб-сайта.   -  person Betzel11    schedule 07.08.2018


Ответы (3)


Скорее всего дело в настройках <base href="">. Допустим, у нас есть проект, созданный angular-cli, под названием «foo». Когда мы запускаем ng build --prod, по умолчанию Angular выводит dist/foo без каких-либо ошибок терминала. Несколько вещей:

  1. Его нужно разместить на сервере, и он не будет работать, просто открыв index.html.

  2. Наш <base href=""> должен отражать, как это помещается на сервер (т. е. добавление папки «foo» вместе с другими проектами/каталогами на сервере или сброс всего содержимого foo в корень сервера).

Итак, для нашего примера, скажем, мы хотим скопировать каталог «foo» на локальный сервер, такой как mamp/wamp, с другими проектами. Делаем это, переходим на localhost/foo и вуаля! Еще чистая страница. Если вы посмотрите на консоль разработчика (Chrome), вы, скорее всего, увидите 404 для отсутствующих стилей/js. Откройте файл индекса и измените <base href="/"> на <base href="/foo/">, и теперь он должен отображаться без проблем. Вы также можете оставить <base href="/"> как есть и добавить «foo» ко всем путям к файлам css/js, которые вызывают ошибки, и это сработает.

Теперь, когда мы знаем, в чем проблема, как мы можем установить это в проекте? В корне вашего проекта давайте откроем angular.json (NG6) и изменим этот бит, чтобы добавить ключи/значения baseHref и deployUrl:

  "architect": {
    "build": {
      "builder": "@angular-devkit/build-angular:browser",
      "options": {
        "baseHref" : "/foo/",
        "deployUrl": "/foo/",

Теперь, когда мы сохраняем и делаем другую сборку, и заменяем предыдущую на сервере, все должно появиться. Вы также можете настроить это с помощью флага на сборке. Из документов:

# Sets base tag href to /myUrl/ in your index.html
ng build --base-href /myUrl/
person Pete Ankelein    schedule 04.10.2018
comment
Просто для подтверждения, относится ли baseHref к корню вашего веб-сервера, а не к корневой папке в файловой системе? т. е. если мои файлы index и js находятся под /root/myapp/dist/myapp и я запускаю http-server -p 4200 /root/myapp/dist/myapp, то baseHref равен /, а не '/root/myapp/dist/myapp/'? - person JohnLBevan; 06.06.2020
comment
Я выполнил эти шаги, однако моя сеть не отображается. Он просто показывает фавикон и, как вы сказали, 404 в стилях. Я только что добавил /project/ в базовый href, но он не работает. какие-нибудь советы по этому поводу? - person Germán; 30.07.2020

Простой трюк: просто удалите / из строки <base href="/"> из index.html Замените строку <base href="/"> на <base href="">

person ashok    schedule 12.02.2021

index.html в проекте не является фактическим index.html, который вы развертываете на сервере. Вы должны сгенерировать файлы, необходимые для развертывания на веб-сервере, используя ng build --prod.

Но даже когда вы создаете производственные файлы, ваш дизайнер все равно не сможет ничего сделать с сгенерированным index.html и другими файлами js. Лучше всего отдать весь проект дизайнеру и научить его/ее, как его запустить с помощью ng serve

person Lahiru Chandima    schedule 07.08.2018
comment
если я хочу развернуть его в домене, чтобы он мог его просмотреть, могу ли я использовать папку dist, созданную из ng build --prod, и передать ее по ftp с помощью FileZilla, чтобы запустить ее, и отправить ему домен? - person Betzel11; 07.08.2018
comment
Да. ng build --prod создает несколько статических файлов, которые вы можете развернуть на любом веб-сервере, который поддерживает развертывание статических файлов. - person Lahiru Chandima; 07.08.2018