【问题标题】:JS static files issues in AWS Production Django Application [duplicate]AWS生产Django应用程序中的JS静态文件问题[重复]
【发布时间】:2017-07-16 15:40:12
【问题描述】:

我遇到了一个奇怪的问题,即在 AWS 中部署应用程序时未定义 angular,但在本地,我的 angular 或 javascript 代码没有问题。

更新:

我的静态文件(JS、CSS、图像等)都存在于 S3 静态文件存储桶中。检索文件没有问题,但似乎已经部署了几个月的工作提交突然在加载静态文件时开始引发 JS 问题。

这是我的基本模板中的 JS 文件:

{% compress js %}
    <script src="{{STATIC_URL}}shared/stacktrace-js/dist/stacktrace.js"></script>
    <script src="{{STATIC_URL}}shared/jquery/2.1.1/jquery.min.js"></script>
    <script src="{{STATIC_URL}}shared/jquery-growl/1.2.3/jquery.growl.js"></script>
    <script src="{{STATIC_URL}}shared/jquery-ui-1.12.1.custom/jquery-ui.min.js"></script>
    <script src="{{STATIC_URL}}ckeditor/ckeditor-init.js"></script>
    <script src="{{STATIC_URL}}shared/ckeditor-custom/ckeditor-custom.js"></script>
    <script src="{{STATIC_URL}}shared/bootstrap/3.3.5/dist/js/bootstrap.min.js"></script>
    <script src="{{STATIC_URL}}shared/utils.js"></script>
    <script src="{{STATIC_URL}}shared/angular/1.3.11/angular.min.js"></script>
    <script src="{{STATIC_URL}}shared/angular/1.3.11/angular-route.min.js"></script>
    <script src="{{STATIC_URL}}shared/angular/1.3.11/angular-cookies.min.js"></script>
    <script src="{{STATIC_URL}}shared/angular-bootstrap/0.11.0/ui-bootstrap-tpls-0.11.0.min.js"></script>
    <script src="{{STATIC_URL}}shared/bootstrap-multiselect/bootstrap-multiselect.js"></script>
    <script src="{{STATIC_URL}}shared/introjs/intro.js"></script>
    <script type="text/django" src="{{STATIC_URL}}shared/ch-error-logging.js"></script>
    <script type="text/django" src="{{STATIC_URL}}shared/ch-config.js"></script>
    <script src="{{STATIC_URL}}shared/angulartics/dist/angulartics.min.js"></script>
    <script src="{{STATIC_URL}}shared/angulartics-segment/dist/angulartics-segment.min.js"></script>
    <script src="{{STATIC_URL}}shared/chart.js/dist/Chart.min.js"></script>
    <script src="{{STATIC_URL}}shared/select2/dist/js/select2.min.js"></script>
    <script src="{{STATIC_URL}}shared/angular-chart.js/dist/angular-chart.js"></script>
    <script src="{{STATIC_URL}}shared/jquery-validation/dist/jquery.validate.min.js"></script>
    <script type="text/django" src="{{STATIC_URL}}shared/ch-track.js"></script>
    <script type="text/django" src="{{STATIC_URL}}shared/ch-file.js"></script>
    <script src="{{STATIC_URL}}shared/offline.js"></script>
    {% endcompress %}

如果我在压缩块内部或外部将 jquery.min.js 更改为 jquery.js,则其他 JS 文件开始引发语法问题。通常 Chrome 控制台中的错误会显示

意外的令牌(

在 Firefox 中,错误提示

语法错误:函数语句需要名称

【问题讨论】:

  • 您好,如果您可以更新完整的错误描述,识别错误会更容易一些。 Unexpected token ( 有点含糊。
  • 这是我在控制台中唯一得到的东西。我在那里还有其他错误说“角度未定义”,我猜这是因为语法错误阻止了 js 文件的加载。
  • 这听起来可能已经在这里修复了:github.com/django-compressor/django-compressor/pull/813,您是否尝试过使用 django-compressor 的开发分支?
  • 谢谢@karyon 您能否说明您认为github.com/django-compressor/django-compressor/pull/813 解决了我的问题。我不确定我是否理解。
  • {% compress %} 标签内的所有文件都连接为一个。在某些情况下,即使输入文件有效,这也会产生无效的输出,例如 PR。 PR 在连接的文件之间插入分号来解决这个问题。即使您认为这个特定的 PR 没有帮助,我建议您尝试当前的开发版本 :)

标签: javascript angularjs django amazon-web-services django-compressor


【解决方案1】:

这个post 帮助我找出哪些 JS 文件导致了压缩 JS 错误。基本上,我在指令/控制器构造方面遇到了问题,通过使用 ng-strict-di,我发现了所有这些问题。

来自 AngularJS ngApp 文档。 https://docs.angularjs.org/api/ng/directive/ngApp

ngStrictDi(可选)布尔值,如果此属性存在于应用程序上 元素,注入器将以“strict-di”模式创建。这表示 应用程序将无法调用不使用的函数 显式函数注释(因此不适合 minification),如依赖注入指南中所述,以及 有用的调试信息将有助于追踪这些问题的根源 错误。

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 2013-07-29
    • 2011-07-20
    • 2021-05-20
    • 2020-09-11
    • 2015-06-19
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多