2012-12-17 15 views
2

背景有點...我設置了我的新網站的基本模板和我在內的一些流行的JavaScript庫,如AngularJS,引導的JavaScript文件,並Underscore.js的javascript 。當然,我將這些文件包裝在{%compress js%}中。下面的示例代碼:Django的壓縮機創建了語法錯誤

{% compress js %} 
    <script src="{{ STATIC_URL }}new_js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script> 
    <script>window.jQuery || document.write('<script src="{{ STATIC_URL }}new_js/vendor/jquery-1.8.3.min.js"><\/script>');</script> 
    <script src="{{ STATIC_URL }}new_js/vendor/bootstrap.js"></script> 

    <!-- Angular --> 
    <script src="{{ STATIC_URL }}new_js/vendor/angular.min.js"></script> 
    <script src="{{ STATIC_URL }}new_js/angular/directives.js"></script> 
    <script src="{{ STATIC_URL }}new_js/angular/services.js"></script> 
    <script src="{{ STATIC_URL }}new_js/vendor/underscore-1.4.3.min.js"></script> 

    {% block extra_js %}{% endblock %} 
{% endcompress %} 

我知道Django的壓縮機只運行了微小的過濾器,所以它可能不產生正確的Javascript輸出minifiers。

這裏是JS錯誤我JSMin得到:

SyntaxError: invalid increment operand 
http://localhost:8000/site_media/static/cache/js/0f5eb5fb3b24.js 
Line 448 

而且從SLIMIT生成的文件中的錯誤:

SyntaxError: missing ; after for-loop initializer 
http://localhost:8000/site_media/static/cache/js/7fbdf61f5abb.js 
Line 1 

我不能完全肯定這是怎麼回事,它似乎很難相信minifiers會產生對這些常見的JS庫不正確的文件。

有沒有人遇到和Django壓縮機的JavaScript過濾器搞亂了公共庫的問題?

回答

1

我去IRC,有人給了我一個很好的提示。他們告訴我使用非縮小版的Javascript文件。這樣,你可以在開發環境中進行調試。這解決了我的大部分問題。

仍然存在着與Underscore.js 1.4.3的最新版本的一個問題,但它是固定在他們的Dev分支。

https://github.com/jonthornton/jquery-timepicker也存在問題。所以,我只是把它放在{%NOCOMPRESS JS%}現在。

+0

包括非縮小版本也修復了我的bug –