Je construis une page Web normale qui m'oblige à charger environ cinq fichiers CSS et dix fichiers Javascript.
- Lorsque vous les chargez séparément dans la page HTML, ma page Web se charge bien.
Maintenant, pour la production, j'ai concaténé tout le Javascript dans un seul fichier, dans l'ordre nécessaire, et tout le CSS dans un autre fichier. Mais lorsque j'essaie d'exécuter la page Web avec les fichiers concaténés, une erreur s'affiche:
Uncaught TypeError: undefined is not a function
Sur la ligne où jquery.min.js est chargé dans le fichier Javascript concaténé.
Que puis-je faire pour atténuer cela? Je souhaite concaténer tous les fichiers et les réduire pour la production. Veuillez aider.
EDIT: J'ai fusionné le Javascript et le CSS dans l'ordre dans lequel ils étaient lorsqu'ils étaient chargés individuellement et fonctionnaient bien.
la source
undefined
si vous n'avez pas de code à montrer?Réponses:
En supposant que ce problème n'a toujours pas été résolu, de nombreux fichiers individuels ne terminent pas leur code par un point-virgule. La plupart des scripts jQuery se terminent par
(jQuery)
et vous devez avoir(jQuery);
.En tant que fichiers séparés, le script se chargera très bien, mais en tant que fichier individuel, vous avez besoin des points-virgules.
la source
Vous devrez peut-être revérifier l'ordre dans lequel vous fusionnez les fichiers, cela devrait être quelque chose comme:
la source
Cette solution a fonctionné pour moi
Déplacez votre code dans la fermeture et utilisez $ au lieu de jQuery
J'ai trouvé la solution ci-dessus dans /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
après avoir trop sollicité
la source
J'ai eu la même erreur d'avoir deux références à différentes versions de jQuery.
Dans ma page maître:
Et aussi sur la page:
la source
J'ai eu ce problème récemment avec le plug-in jQuery Validation , en utilisant Squishit , obtenant également l'erreur js:
Je l'ai corrigé en modifiant la référence au fichier jquery.validate.js non réduit au lieu de jquery.validate.min.js.
Je pense que la version minifiée de certains fichiers, lorsqu'elle est davantage compressée à l'aide de Squishit, par exemple, pourrait dans certains cas ne pas traiter les points-virgules manquants, etc., comme le suggère @Dustin, vous devrez donc peut-être expérimenter avec quels fichiers vous pouvez compressez doublement, et que vous laissez simplement à Squishit ou à tout ce que vous associez.
la source
Pour ceux qui ne pouvaient toujours pas résoudre ce problème, je l'ai fait en changeant mon «ceci» en «$ (this)» lors de l'utilisation de jQuery.
PAR EXEMPLE:
Fixé:
la source
J'ai rencontré le même problème, lorsque j'ai nommé par erreur variable avec le même nom, comme fonction.
Donc ça:
échoué, générant le message d'erreur mentionné par OP.
La résolution de ce problème était aussi simple que de changer la ligne ci-dessus en:
Je ne sais pas, à quel point cela aide-t-il dans cette situation, mais j'ai décidé de mettre cette réponse pour les autres à la recherche d'une solution à des problèmes similaires.
la source
Oui, je l'ai aussi corrigé en changeant dans les bibliothèques js en un minified.
Par exemple, dans la balise, modifiez:
Pour:
Quitter le 'min' comme non minimisé.
Merci pour l'idée.
la source
N'oubliez pas: les fonctions Javascript sont SENSIBLES À LA CASE.
J'ai eu un cas où je suis à peu près sûr que mon code fonctionnerait correctement. Mais quand même, j'ai eu une erreur et j'ai vérifié la console Javascript de Google Chrome pour vérifier ce que c'est.
Ma ligne d'erreur est
Et j'ai le même message d'erreur:
Rien ne semble mal avec le code ci-dessus mais il ne fonctionnait pas. Je dépanne pendant près d'une heure, puis je l'ai comparé avec mon autre code en cours d'exécution. Mon erreur est qu'il a été réglé sur
SetAttribute
, ce qui devrait l'êtresetAttribute
.la source
Au cas où il y aurait des crétins comme moi, j'ai eu ce problème frustrant parce que j'ai oublié un simple
new
mot clé avant d'instancier un nouvel objet.
la source
Je viens d'avoir le même message avec le code suivant (dans IcedCoffeeScript):
Cela m'a semblé être un code ICS normal. J'ai déplié la construction await-defer en CoffeeScript standard:
Ce qui s'est vraiment passé, c'est que j'ai essayé de passer 1 fonction de rappel (avec 2 paramètres) pour fonctionner en
f
attendant deux paramètres, en fait sans définir à l'cb
intérieurf
, ce que le compilateur a correctement signaléundefined is not a function
.L'erreur s'est produite parce que j'ai collé aveuglément du code standard de style rappel.
f
n'a pas besoin d'unerr
paramètre passé, donc devrait simplement être:Dans le cas général, je recommanderais de revérifier les signatures de fonction et les invocations pour les arités correspondantes. La pile d'appels dans le message d'erreur doit être en mesure de fournir des conseils utiles.
Dans votre cas particulier, je recommande de rechercher des définitions de fonctions apparaissant deux fois dans le fichier fusionné, avec des signatures différentes, ou des affectations à des variables globales contenant des fonctions.
la source
Assurez-vous d'avoir commenté tous les commentaires. Parfois, lors de la copie et du collage, vous omettez le "/ *!"
De plus, lorsque vous accédez à la console, ils répertorient vos erreurs et vous devez les prendre une à la fois. Si vous voyez "Uncaught SyntaxError: Uncaught token *" Cela peut signifier qu'il lit votre fichier js et qu'il ne dépasse pas la première ligne.
/ *! * jquery.tools 1.1.2 - La bibliothèque d'interface utilisateur manquante pour le Web * * [tools.tabs-1.0.4, tools.tooltip-1.1.2, tools.scrollable-1.1.2, tools.overlay-1.1.2, tools.expose-1.0.5] * * Copyright (c) 2009 Tero Piirainen * http://flowplayer.org/tools/ * Fichier généré: Wed Oct 07 09:40:16 GMT 2009 * /
la source
J'ai eu cela lorsque j'ai accidentellement passé trop de paramètres dans une fonction jquery qui n'attendait qu'un seul paramètre de rappel.
Pour le dépannage des autres: assurez-vous de vérifier tous vos appels de fonction jquery pour des paramètres supplémentaires.
la source