Recibo este error cuando busco mi aplicación web por primera vez (generalmente en un navegador con caché deshabilitada).
Error: módulo define () anónimo no coincidente: función (requiere) {
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
});
});
¿Alguien sabe exactamente qué significa este error y por qué está sucediendo?
archivo fuente , una breve discusión al respecto en la página de problemas de github
javascript
jquery
requirejs
Adonis K. Kakoulidis
fuente
fuente
Tuve este error porque incluí el archivo requirejs junto con otras bibliotecas incluidas directamente en una etiqueta de script. Esas bibliotecas (como lodash) usaron una función de definición que estaba en conflicto con la definición de require. El archivo requirejs se estaba cargando de forma asíncrona, por lo que sospecho que la definición de require se definió después de la definición de las otras bibliotecas, de ahí el conflicto.
Para deshacerse del error, incluya todos sus otros archivos js utilizando requirejs.
fuente
Al comenzar con reactjs me encontré con el problema y, como principiante, los documentos también pueden estar escritos en griego.
El problema con el que me topé fue que la mayoría de los ejemplos para principiantes usan "definiciones anónimas" cuando deberías usar un "id de cadena".
anónimo define
definir con id de cadena
Cuando use define con una identificación de cadena , evitará este error cuando intente usar los módulos de esta manera:
fuente
Por los documentos :
fuente
Tenga en cuenta que algunas extensiones del navegador pueden agregar código a las páginas. En mi caso, tenía un plugin "Emmet en todas las áreas de texto" que se equivocaba con mis requireJs. Asegúrese de que no se agregue ningún código adicional a su documento inspeccionándolo en el navegador.
fuente
Las respuestas existentes explican bien el problema, pero si incluir sus archivos de script usando o antes requireJS no es una opción fácil debido a un código heredado, una solución un tanto extravagante es eliminar require del alcance de la ventana antes de su etiqueta de script y luego restablecerlo después. En nuestro proyecto, esto está envuelto detrás de una llamada de función del lado del servidor, pero efectivamente el navegador ve lo siguiente:
No es el más bonito, pero parece funcionar y ha ahorrado una gran cantidad de refractarización.
fuente
script
elementos.(function(){ var define = undefined; // the UMD registration code won't find the global 'define' anymore! // generated content goes here })()
O puedes usar este enfoque.
<script data-main="js/app.js" src="js/require.js"></script>
Lo que hará cargará su script después de cargar require.js .
fuente