PrestaShop 9 klaidos
jquery-1.11.0.min.js 404 ir „$ is not defined“ atnaujinus į PrestaShop 9
PrestaShop 9 aplanke js/jquery palieka tik jQuery 3.7.1. Moduliai ir temos, kurie senesnį failą įkelia pagal kelią, gauna 404, o visi nuo jo priklausantys skriptai sustoja su „$ is not defined“.
- Klaida
GET /js/jquery/jquery-1.11.0.min.js 404 (Not Found)- Pašalinta
- PrestaShop 9.0
- Dažniausiai randama
- Temos, senesni moduliai
Kas nutiko
Anksčiau PrestaShop js/jquery/ aplanke turėjo kelias jQuery versijas, o kai kurie moduliai ir temos įkeldavo vieną jų pagal tikslų failo vardą. PrestaShop 9 palieka tik jquery-3.7.1.min.js ir jquery-migrate-3.4.0.min.js. Keliai į jquery-1.11.0, jquery-3.4.1, jquery-3.5.1, jquery-migrate-1.2.1 ar jquery-migrate-3.1.0 dabar grąžina 404.
Pati 404 klaida nekenksminga. Bėdos prasideda po jos: skriptai, kurie tikėjosi jQuery, sustoja su $ is not defined ar jQuery is not defined, o kartu su jais – slankikliai, iššokantys langai, prekių pasirinkimai ar administravimo formos.
Pagalbinė funkcija Media::getJqueryPath(), kuria kai kurie moduliai ieškodavo failo, pašalinta dar PrestaShop 8.0.
Sprendimas
Neįkelkite jQuery patys:
- Administravime: PrestaShop 9 jau įkelia jQuery 3.7.1 kiekviename puslapyje. Pašalinkite modulio
addJS()su senu failu. - Parduotuvėje: jQuery ateina su tema (Classic jį turi savo pagrindiniame JavaScript faile). Prieš pridėdami kitą kopiją, patikrinkite, ką duoda jūsų tema, ir niekada neįkelkite antros jQuery ant viršaus: prie pirmosios prijungti įskiepiai dingsta.
- Seni įskiepiai: jQuery 1.x skirtas kodas gali naudoti 3.x pašalintus metodus, tokius kaip
.live(),.size()ar.load(fn). Kuriuos – parodys naršyklės konsolė.jquery-migratedalį jų laikinai grąžina, bet tikras sprendimas – atnaujinti kodą.
// Buvo
$this->context->controller->addJS(_PS_JS_DIR_ . 'jquery/jquery-1.11.0.min.js');
$this->context->controller->addJS(Media::getJqueryPath());
// Dabar: nieko, jQuery jau yra puslapyje
Kur dar slepiasi
grep -rn "jquery-1\.\|jquery-3\.[45]\|jquery-migrate-\|getJqueryPath" modules/ themes/ override/
Peržiūrėkite ir temos head.tpl bei maketo šablonus: ranka įrašytos <script> žymos ten dažnos.