J'obtiens cette erreur lorsque je navigue sur mon application Web pour la première fois (généralement dans un navigateur avec un cache désactivé).
Erreur: module define () anonyme incompatible: function (require) {
HTML :
<html>
.
.
.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script> var require = { urlArgs: "v=0.4.1.32" }; </script>
<script data-main="assets/js/main" src="assets/js/libs/require.js"></script>
<script src="assets/js/ace/ace.js?v=0.4.1.32"></script>
</body>
</html>
JS :
$(function () {
define(function (require) {
// do something
});
});
Quelqu'un sait exactement ce que signifie cette erreur et pourquoi cela se produit?
fichier source , une brève discussion à ce sujet dans la page des problèmes de github
la source
J'ai eu cette erreur parce que j'ai inclus le fichier requirejs avec d'autres librairies inclus directement dans une balise de script. Ces librairies (comme lodash) utilisaient une fonction de définition qui était en conflit avec celle de require. Le fichier requirejs se chargeait de manière asynchrone, donc je soupçonne que la définition du require a été définie après la définition des autres bibliothèques, d'où le conflit.
Pour vous débarrasser de l'erreur, incluez tous vos autres fichiers js à l'aide de requirejs.
la source
En débutant avec reactjs, j'ai rencontré le problème et en tant que débutant, la documentation peut aussi bien être écrite en grec.
Le problème que j'ai rencontré était que la plupart des exemples pour débutants utilisent des "définitions anonymes" alors que vous devriez utiliser un "identifiant de chaîne".
anonyme définit
définir avec un identifiant de chaîne
Lorsque vous utilisez define avec un identifiant de chaîne, vous éviterez cette erreur lorsque vous essayez d'utiliser les modules comme ceci:
la source
Selon les documents :
la source
Sachez que certaines extensions de navigateur peuvent ajouter du code aux pages. Dans mon cas, j'avais un plugin "Emmet in all textareas" qui gênait mes requireJs. Assurez-vous qu'aucun code supplémentaire n'est ajouté à votre document en l'inspectant dans le navigateur.
la source
Les réponses existantes expliquent bien le problème, mais si l'inclusion de vos fichiers de script en utilisant ou avant requireJS n'est pas une option facile en raison du code hérité, une solution de contournement légèrement piratée consiste à supprimer require de la portée de la fenêtre avant votre balise de script, puis à la réintégrer après les mots. Dans notre projet, cela est encapsulé derrière un appel de fonction côté serveur, mais le navigateur voit effectivement ce qui suit:
Ce n'est pas le plus soigné mais semble fonctionner et a économisé beaucoup de réfraction.
la source
script
éléments quelconques .(function(){ var define = undefined; // the UMD registration code won't find the global 'define' anymore! // generated content goes here })()
Ou vous pouvez utiliser cette approche.
<script data-main="js/app.js" src="js/require.js"></script>
Ce qu'il fera, il chargera votre script après le chargement de require.js .
la source