Django-compressor: Anda mengaktifkan kompresi offline tetapi kuncinya hilang dari manifes offline

Dibuat pada 1 Des 2011  ·  17Komentar  ·  Sumber: django-compressor/django-compressor

Saya tidak yakin apa masalah ini tetapi saya menggunakan pembuatan offline dan kesalahan ini terjadi setelah menggunakan perintah manajemen kompres dan mengakses situs web. Haruskah masing-masing file css itu memiliki kuncinya sendiri?

Pengaturan Saya:
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_OFFLINE = Benar
COMPRESS_OFFLINE_MANIFEST = "manifest.json" # Dibuat di direktori CACHE
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter','compressor.filters.cssmin.CssMinFilter']
COMPRESS_YUI_BINARY = os.path.join(PROJECT_ROOT, 'bin/yui.sh')
COMPRESS_JS_FILTERS = ['compressor.filters.closure.ClosureCompilerFilter']
COMPRESS_CLOSURE_COMPILER_BINARY = os.path.join(PROJECT_ROOT, 'bin/closure.sh')
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = "--language_in=ECMASCRIPT5"

COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage' # TIDAK BEKERJA WTF

Anda mengaktifkan kompresi offline tetapi kunci "b68ba4d2116295c56138e439f1b03a03" hilang dari manifes offline. Anda mungkin perlu menjalankan "python manage.py kompres".

Metode Permintaan: DAPATKAN
URL Permintaan: http://127.0.0.1 :8000/
Versi Django: 1.3.1
Jenis Pengecualian: OfflineGenerationError
Nilai Pengecualian:
Anda mengaktifkan kompresi offline tetapi kunci "b68ba4d2116295c56138e439f1b03a03" hilang dari manifes offline. Anda mungkin perlu menjalankan "python manage.py kompres".
Lokasi Pengecualian: /srv/www/project/lib/python2.6/site-packages/compressor/templatetags/compress.py di render_offline, baris 56

Variable    Value
forced  
False
self    
<compressor.templatetags.compress.CompressorNode object at 0x966764c>
compressor  
<compressor.js.JsCompressor object at 0x966732c>
key 
'b68ba4d2116295c56138e439f1b03a03'
offline_manifest    
{u'32e9172ad82f3b6d238cc7423a7f10c7': u'<link rel="stylesheet" href="/static/CACHE/css/a50381ce7ba9.css" type="text/css" media="screen" /><link rel="stylesheet" href="/static/CACHE/css/62afac347423.css" type="text/css" /><link rel="stylesheet" href="/static/CACHE/css/f336d54a5423.css" type="text/css" media="screen" /><link rel="stylesheet" href="/static/CACHE/css/5cf783d07673.css" type="text/css" />',
 u'b1bd8f68f96dfa53380b10881f8eb691': u'<script type="text/javascript" src="/static/CACHE/js/19522c6ee302.js"></script>',
 u'c6d6d2948d18188277e7a987c71e2bc3': u'<script type="text/javascript" src="/static/CACHE/js/90bda37980a5.js"></script>',
 u'dbe0b22545cd64193d8a875c3226b1ea': u'<script type="text/javascript" src="/static/CACHE/js/71056921eb77.js"></script>'}

Komentar yang paling membantu

Apakah hal yang sama terjadi. Tidak memiliki kode sebaris dalam kompres, dan kunci yang dilaporkan hilang sebenarnya ada di manifest.json
Benar-benar tidak tahu apa yang terjadi, ada orang lain yang masih memiliki ini? Semua komentar lain tentang ini berasal dari setahun yang lalu

Semua 17 komentar

Versi Django_compressor apa yang Anda gunakan?

Apa pun yang ada di PyPI. Saya akan mencoba memutakhirkan ke versi dev terbaru. Terima kasih

Saya memiliki masalah yang sama dengan mencampur skrip sebaris dengan file yang disertakan.

Ini adalah kode template saya.

{% compress js %}
    <script type="text/javascript">
    xhr_cidades = '{% url cidades_consulta %}';
    xhr_imoveis = '{% url imoveis_consulta %}';
    xhr_empresas = '{% url empresas_consulta %}';
    xhr_empreend = '{% url empreendimentos_consulta %}';
    </script>

    <script type="text/javascript" src="{{ STATIC_URL }}jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-ui/jquery-ui-1.8.13.custom.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-ui/jquery-ui-datepicker-pt-BR.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-ui/jquery-ui-combobox.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-meiomask-1.1.3.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-scrollto-1.4.2.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-dotimeout-1.0.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}base.js"></script>
{% endcompress %}

Dan ini adalah data yang digunakan kompresor Django untuk menghasilkan kunci manifes.

['\n    <script type="text/javascript">\n        xhr_cidades = \'', '<django.template.defaulttags.URLNode object at 0x23cf1d0>',
 "';\n        xhr_imoveis = '", '<django.template.defaulttags.URLNode object at 0x23cf750>', "';\n        xhr_empresas = '",
 '<django.template.defaulttags.URLNode object at 0x23cf210>', "';\n        xhr_empreend = '",
 '<django.template.defaulttags.URLNode object at 0x23cf2d0>', '\';\n    </script>\n\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-1.6.1.min.js"></script>\n    <script type="text/javascript" src="', '<Variable Node:
 STATIC_URL>', 'jquery-ui/jquery-ui-1.8.13.custom.min.js"></script>\n    <script type="text/javascript" src="', '<Variable
 Node: STATIC_URL>', 'jquery-ui/jquery-ui-datepicker-pt-BR.min.js"></script>\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-ui/jquery-ui-combobox.min.js"></script>\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-meiomask-1.1.3.min.js"></script>\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-scrollto-1.4.2.min.js"></script>\n    <script type="text/javascript" src="', '<Variable
 Node: STATIC_URL>', 'base.js"></script>\n']

Kuncinya adalah ringkasan representasi string dari daftar node di dalam blok {% compress %} . Jika data tersebut bervariasi setiap kali blok diuraikan (lihat alamat 0x23cf750 pada URLNode di atas), pemuatan halaman akan selalu menghasilkan kunci yang berbeda dari apa yang telah Anda simpan di file manifes Anda.

Dalam kasus saya, menghapus kode sebaris dari blok {% compress %} menyelesaikan masalah.

Anda dapat melacak data dan mencernanya dalam fungsi get_hexdigest dari compressor.cache . Cari petunjuk di log kesalahan keluaran/server web standar Anda.

Semoga membantu,

Itu harus diperbaiki dalam versi pengembangan, berkat perbaikan yang terjadi di #154

Sepertinya masalahnya adalah skrip yang disertakan di dalam blok sebaris. Ini ada di versi dev terbaru. Terima kasih @viotti

{% compress js inline %}
<script type="text/javascript" src="/static/js/pages/calculator.js"></script>

Masalah ini mungkin harus ditutup, seperti yang disebutkan sebelumnya di sini, ini adalah duplikat dari #154.

Hai, saya menderita masalah ini. settings.py saya terlihat seperti ini:

### COMPRESSION - django_compressor
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_PARSER = 'compressor.parser.LxmlParser'
COMPRESS_CSS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    ]
COMPRESS_JS_FILTERS = [
    'compressor.filters.closure.ClosureCompilerFilter',
]

COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar /path/to/compiler.jar'

Semua berfungsi dengan baik kecuali dengan kode js sebaris yang ada di file .html. Saya memiliki beberapa file eksternal css/js yang ditautkan dari .html saya. Semua ini dikompresi dengan baik dengan {% compress css/js %}, tetapi ketika saya mencoba mengompres semua kode js yang dicetak dalam file .html (kode antara

Masih memiliki masalah dengan ini. Tampaknya bahkan di cabang dev, menggunakan {{ STATIC_URL }}, proses pembuatan hex menghasilkan heksa baru yang tidak masuk akal atau sesuai dengan heks yang disimpan di manifest.json.

Solusi: jangan kompres js menjangkau satu blok. Misalnya, gunakan kompres sekali di templat master dan sekali di templat yang diwarisi masing-masing. Kelemahan: dua permintaan http untuk css dan js masing-masing, bukan satu. Dapat direduksi menjadi satu dengan memindahkan master js/css ke semua template.

Akan lebih baik jika kita tidak harus memilih antara KERING di template dan mengurangi permintaan http :)

Apakah hal yang sama terjadi. Tidak memiliki kode sebaris dalam kompres, dan kunci yang dilaporkan hilang sebenarnya ada di manifest.json
Benar-benar tidak tahu apa yang terjadi, ada orang lain yang masih memiliki ini? Semua komentar lain tentang ini berasal dari setahun yang lalu

@altryne : itu bisa menjadi masalah izin, verifikasi bahwa server web/proses Django memiliki hak untuk membaca manifes. Tidak dapat membantu lebih banyak tanpa detail lebih lanjut.

Ternyata itu adalah Django dengan 500 halaman. Dengan kompresi offline, Django mencoba merender halaman 500 tanpa konteks, yang dengan sendirinya menciptakan kesalahan 500.

Ini sangat membantu:
http://chriskief.com/2013/09/18/Django-compressor-offlinegenerationerror-and-500-html-handler500/

Hai semuanya, tautan ke chriskief.com sangat membantu. Namun, itu tidak menyelesaikan masalah bagi saya. Ternyata saya memiliki vars template Django seperti "{{myvar}}" di javascripts saya. Saya lupa menambahkannya ke COMPRESS_OFFLINE_CONTEXT dan karenanya saya mendapatkan kesalahan kunci yang hilang. Setelah saya mengeluarkan semua javascripts saya dengan variabel template dari kompresor, semuanya bekerja dengan baik lagi. Sebelum saya mendapat kesalahan 500 yang tidak menampilkan kesalahan Django standar tetapi "halaman kesalahan konfigurasi" Apache. Saya belum yakin, apakah hanya definisi yang hilang di COMPRESS_OFFLINE_CONTEXT yang menjadi masalah atau jika {% url ... %} juga menyebabkan masalah ini.

Saya melihat ini dalam penerapan saya. Saya menggunakan kompres seperti itu

{% compress css %}
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'css/bootstrap-social.css' %}">
<link rel="stylesheet" type="text/css" href="{% sass_src 'css/base.scss' %}">
{% endcompress %}

mungkinkah kompres tidak dapat memproses tag sass_src ?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat