Als u gebruik maakt van jQuery, Angular JS, of gewoon oude JavaScript en het krijgen van “Uncaught ReferenceError: $ is niet gedefinieerd” fout die betekent dat $ is ofwel een variabele of een methode die u probeert te gebruiken voordat de verklaring met behulp van var keyword. In jQuery, het is een korte naam van jQuery() functie en het meest gebruikt in $(document).ready(function()). Als je een aantal jQuery dingen doet wanneer DOM wordt geladen en je krijgt deze foutmelding, dan betekent dit dat je browser een probleem heeft met het laden van de jQuery bibliotheek, hetzij van het internet of van het lokale bestandssysteem.
In dit artikel zul je een aantal van de meest voorkomende redenen voor de “Uncaught ReferenceError: $ is not defined” fout zien en hoe je die kunt oplossen, maar laten we eerst wat basiskennis opdoen over de gevreesde Uncaught ReferenceError: $ is not defined error.
En, als je Moderne JavaScript wilt leren of je vaardigheden wilt verbeteren, dan raad ik je aan om mee te doen aan De Complete JavaScript Cursus: Build Real Project door Jonas Scmedtmann op Udemy. Het is een van de beste en hand-son cursus om ES 6 en andere nieuwe Javascript functies te leren.
Een van de veel voorkomende redenen voor deze fout is direct beginnen met jQuery zonder kennis van JavaScript fundamentals. Ik heb veel web-ontwikkelaars die afkomstig zijn uit Java, C #, HTML, en Python achtergrond begon met behulp van jQuery zonder veel te weten over JavaScript.
Als je toevallig te werken in hetzelfde scenario, ik stel voor dat je leest ten minste een van de goede JavaScript boeken voor beginners, bijvoorbeeld Head First JavaScript. Onthoud altijd dat jQuery een bibliotheek is die is gebouwd op JavaScript; als je JavaScript eenmaal kent, is het veel gemakkelijker om een jQuery-fout op te lossen.
Uncaught ReferenceError: X is niet gedefinieerd
Omdat JavaScript wordt uitgevoerd in de browser, zal uw browser zoals Firefox, Chrome, Edge of Internet Explorer deze foutmelding geven wanneer u een variabele gebruikt die niet gedefinieerd is, bijvoorbeeld, de volgende code zal deze foutmelding geven, maar zodra u de variabele declareert met het var keyword, zal de foutmelding verdwijnen:
data; // ReferenceError: data is not definedvar data;data; // Geen fouten meer
Ook als u een methode benadert voordat u deze hebt gedeclareerd, krijgt u deze foutmelding, zoals hieronder te zien is:
proces(); // ReferenceError : proces is niet gedefinieerd proces = function(){};proces(); // Geen fouten
Nu je hebt geleerd wanneer de browser Uncaught ReferenceError gooit: $ is not defined, is het tijd om te kijken naar enkele veel voorkomende redenen waarom deze fout optreedt bij het gebruik van jQuery, AngularJS of een andere JavaScript bibliotheek die $ als snelkoppeling gebruikt.
1) Een van de meest voorkomende redenen van “ReferenceError: $ is not defined” in een jQuery gebaseerde toepassing is dat de jQuery plugin is opgenomen vóór het jQuery bestand. Aangezien jQuery plugin $ gebruikt, gooit het “ReferenceError: $ is not defined” als het niet wordt gevonden, wat logisch is omdat jQuery tot dan toe nog niet was geladen.
<script src="/lib/jquery.plugin.js"></script><script src="/lib/jquery.min.js"></script>
Oplossing: Neem het bestand jquery.js op vóór alle jQuery plugin bestanden.
<script src="/lib/jquery.min.js"></script><script src="/lib/jquery.plugin.js"></script>
2) De tweede meest voorkomende reden van het krijgen van “ReferenceError: $ is niet gedefinieerd” in jQuery is te wijten aan het onjuiste pad, of het is een typefout of het jQuery bestand is verplaatst naar een andere locatie, waardoor de browser niet in staat is om het jQuery bestand te laden.
Eén oplossing van dit probleem is gewoon om het pad naar jQuery bibliotheek vast te stellen. Als u jQuery downloadt van CDN, dan kunt u ook gebruik maken van Google gehoste jQuery bestand, dat is bijna altijd beschikbaar.
3) Een andere bizarre, maar een veel voorkomende reden van “ReferenceError: $ is niet gedefinieerd” in jQuery” is dat je misschien offline werkt, maar het laden van jQuery van internet. Het is een van de domme fout elke web ontwikkelaar maakt het een of andere tijd. De oplossing is eenvoudig: maak verbinding met internet of gebruik een lokale kopie van de jQuery bibliotheek, zoals hieronder is weergegeven:
<script src="/js/jquery.min.js"></script>