Угловая подача работает, угловая сборка не обновляет файлы - PullRequest
0 голосов
/ 24 мая 2018

Я управляю проектом с Angular и Django.Сегодня, когда я изменил код в шаблонах, сборка ng не обновилась.Я обнаружил, что он не обновляет изменения шаблона или изменения компонентов.Однако, когда я вместо этого запускаю ng serve и вместо порта 8000 Django перехожу на 127.0.0.1:4200, отображаются новые версии обновлений.

У меня есть шаблон, настроенный на Django.указывает на TemplateViev:

{% load static %}
{% csrf_token %}
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>AngularWebapp</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
  <app-root></app-root>
{% block javascript %}
<script type="text/javascript" src="{% static 'runtime.js' %}"></script><script type="text/javascript" src="{% static 'polyfills.js' %}"></script><script type="text/javascript" src="{% static 'styles.js' %}"></script><script type="text/javascript" src="{% static 'vendor.js' %}"></script><script type="text/javascript" src="{% static 'main.js' %}"></script>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
{% endblock %}
</body>
</html>

И статический макет каталога выглядит следующим образом в settings.py:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'angular', 'static'),
    os.path.join(BASE_DIR, 'angular-webapp', 'dist', 'angular-webapp'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

И urls.py:

from django.contrib import admin
from django.urls import path, re_path, include
from django.views.generic import TemplateView
from rest_framework import routers
from authentication.views import AccountViewSet, LoginView
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib.staticfiles import views

router=routers.SimpleRouter()
router.register('accounts', AccountViewSet)

class IndexView(TemplateView):
    template_name = 'index.html'

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/', include(router.urls)),
    re_path(r'^api/v1/auth/login/$', LoginView.as_view(), name='login'),
    re_path(r'^.*/$', IndexView.as_view()),
    path('', IndexView.as_view()),
]

Это единственное место, где у меня есть статические файлы, и где находятся файлы из сборки ng, IE.статическая загрузка загружает runtime.js и т. д. из папки, в которую он выводится при сборке.

Однако со вчерашнего дня изменения, которые я вносил в свое приложение в папке angular-webapp / src / app, не 'не обновляется при сборке.Я попытался удалить папку dist, чтобы создать новую, но это ничего не меняет.Когда он возвращается и я запускаю проект, он все равно каким-то образом использует старый макет, в то время как ng serve отлично работает.

Что-то в том, как работает ng build, мне не хватает?

1 Ответ

0 голосов
/ 24 мая 2018

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

рассмотрите возможность построения с флагом --prod, который содержит несколько других флагов, таких как --aot, но чтобы исправить вашу проблему, попробуйте построить с помощью --output-hashing=all.

Непосредственно от ng build --help:

--output-hashing=none|all|media|bundles 
  (String) Define the output filename cache-busting hashing mode.
  aliases: -oh <value>, --outputHashing <value>
...