2017-12-14 6 views
0

私が取り組んでいるプロジェクトはRGBFieldを使用しています。これはテンプレートにこのスクリプトを挿入しています(これはどこのdjangoの奥深くです)。jQueryがDjangoのRGBFieldで見つかりません

<script type="text/javascript"> 
       (function($){ 
        $(document).ready(function(){ 
         $('#id_color').each(function(i, elm){ 
          // Make sure html5 color element is not replaced 
          if (elm.type != 'color') $(elm).colorPicker({"colors": ["f1c40f", "2ecc71", "9b59b6", "e74c3c", "34495e", "3498db", "1abc9c", "f39c12", "d35400"]}); 
         }); 
        }); 
       })('django' in window && django.jQuery ? django.jQuery: jQuery); 
      </script> 

コンソールでエラーが発生しました:Uncaught ReferenceError: jQuery is not definedエラーがどこで発生しているかを調べることができませんが、RGBFieldを削除すると問題が解決します。

プロジェクトでJqueryが使用されています。テンプレート自体にjQueryを使用すると、テンプレート自体に問題はありません。

私はプロジェクトにdjango-jqueryを追加し、テンプレートの先頭に{% load staticfiles %}を追加しました。問題を解決しません。

私はすべてを楽しく無視していましたが、今はこのページでサイプレステストを書く必要があります。そのエラーはテストをブロックしています。

サイプレスでこのエラーを無視する方法はありますか?あるいは、最初にエラーが発生するのを防ぐ方法がありますか? RGBFieldにjqueryのチェックをオフにするフラグがありますか?

'django' in windowを実行すると、falseが生成され、django.jQueryを実行するとエラーが発生します。 'django' in window && django.jQueryを実行するとfalseが生成されるので、理論上は2番目のオプションを取る必要があります。これはコンソールで実行したときには問題ありませんが、明らかに何かが不足しています。

EDIT:インストールされたアプリの

一覧:

'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.humanize', 
'whitenoise.runserver_nostatic', 
'storages', 
'django.contrib.staticfiles', 
'django.contrib.flatpages', 
'jquery', 
'django.contrib.sites', 
'django_activeurl', 
'webpack_loader', 
'widget_tweaks', 
'argonauts', 
'rest_framework', 
'main', 
+0

'django.jQuery'を実行しているときのエラーが' django not defined'であり、 'jQuery not defined'ではないことに気付きました。したがって、これは、スクリプトがテンプレートに書き込まれた後にjqueryがロードされる問題であると考えられます。 –

+0

Djangoのどのバージョンとそれらのパッケージを使用していますか?私はdjango-rgbfieldが2016年5月から更新されていないことに気付きました。 '' django 'in windowの存在の確認は信頼できません。特にCypressのような自動化されたテストツールの下では。 –

+0

Djangoはバージョン2.0、django.jQueryは3.1.0です。 –

答えて

0

エラーが最も可能性の高いコード行に関する:それは多分役に立つ理解し、検討する

'django' in window && django.jQuery ? django.jQuery: jQuery

ternary conditional

デフォルトでは、Django管理者はウィンドウのグローバルに「django」変数を設定し、jQueryにピンを固定します。これは、管理者がjQueryを使用するためです。管理者の外では、カスタムテンプレートでは、jQueryを必要に応じて組み込む方法を開発者が決定する必要があります。

したがって、文'django' in window && django.jQueryはDjango管理者ページのtrueと評価され、3進の「真」側でスニペットが参照されて参照されます。あるいは、三者の偽の側では、jQueryは既にグローバルスコープに存在していると見なされます。 jQueryへの参照は、パラメータとしてIIFEに渡されます。

ページソースを調べて、jQueryモジュールが参照されているかどうかを判断し、そのスニペットの前に正しくロードされていることを確認します。

0

デフォルトでは、キャッチされない例外がスローされたときに、Cypressはテストに失敗します。この動作は多くのユーザーにとって有益であり、開発者には気づいていないバグをよく知らせることがあります。

言われていることですが、キャッチされない例外がスローされ、それを無視してテストを続行したいときがあります(特にサードパーティのプラグインからスローされている場合)。これはusing Cypress eventsで行うことができます。多分あなたはサポートファイル(cypress/support/index.js)でこれを行うことになるでしょうので、それはすべてのスペックファイルに適用される

Cypress.on('uncaught:exception', (err, runnable) => { 
    // returning false here prevents Cypress from failing the test 
    return false 
}) 

:すべてのキャッチされない例外処理をオフにするには

関連する問題