生产模式下的Angular-Django全栈应用会产生运行时错误

时间:2019-02-13 21:15:46

标签: django angular

我正在构建一个示例的全栈应用,前端是Angular 6,后端是Django 2.02。整个代码在这里: https://github.com/shivkiyer/django-angular

我通过执行“ ng serve”来启动Angular开发服务器,并在Django上进行了“ python manage.py runserver --settings = django_angular.settings.development”,从而在开发模式下工作。我访问localhost:4200上的Angular服务器,该服务器对localhost:8080进行API调用

当我在Angular终端上执行“ ng build --output-hashing none”并继续使用Django dev服务器时,一切都很好,我可以从本地主机:8080完全访问该应用程序。

当我在Angular终端上执行“ ng build --prod --output-hashing none”并运行Django dev服务器时,在ng build上没有得到任何编译错误,但出现了运行时错误。首先,我的Bootstrap样式没有显示。而且我在控制台中得到了错误:

GET http://localhost:8080/static/styles.js net::ERR_ABORTED
GET http://localhost:8080/static/vendor.js net::ERR_ABORTED

当我进入Django生产模式时。我设置DEBUG = False,并将本地计算机IP地址以及127.0.0.1和localhost添加到ALLOWED_HOSTS。我做了一个“ python manage.py collecstatic”。当我使用“ python manage.py runserver --settings = django_angular.settings.production”运行服务器时,根本没有页面。我收到这些错误:

Uncaught SyntaxError: Unexpected token < runtime.js:2
Uncaught SyntaxError: Unexpected token < polyfills.js:2
Uncaught SyntaxError: Unexpected token < styles.js:2
Uncaught SyntaxError: Unexpected token < vendor.js:2
Uncaught SyntaxError: Unexpected token < main.js:2

当我在Google Chrome浏览器中检出其中任何一个时,都会显示一个HTML页面:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Frontend</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
</head>
<body>
  <app-root></app-root>
  <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>
</body>
</html>

但是在我计算机的静态文件夹中,我看到了缩小的JS文件。

所以,我的问题:

  1. 在构建--prod时,Bootstrap不会被复制吗?
  2. 是否有办法找出ng build --prod是否存在编译错误?像严格的编译选项一样?
  3. 当前端为Angular时,是否有任何特殊方式在生产中运行Django? collectstatic的特殊选择吗?

0 个答案:

没有答案
相关问题