Estou recebendo esse erro quando navego no meu aplicativo da web pela primeira vez (geralmente em um navegador com cache desativado).
Erro: módulo define () anônimo incompatível: 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
});
});
Alguém sabe exatamente o que esse erro significa e por que está acontecendo?
arquivo de origem , uma breve discussão sobre ele na página de problemas do github
javascript
jquery
requirejs
Adonis K. Kakoulidis
fonte
fonte
Eu tive esse erro porque incluí o arquivo requirejs juntamente com outras bibliotecas incluídas diretamente em uma tag de script. Essas bibliotecas (como lodash) usavam uma função de definição que estava em conflito com a definição de require. O arquivo requirejs estava carregando de forma assíncrona, então eu suspeito que a definição de require foi definida depois que as outras bibliotecas definem, daí o conflito.
Para se livrar do erro, inclua todos os seus outros arquivos js usando requirejs.
fonte
Ao iniciar o reactjs, deparei-me com o problema e, como iniciante, os documentos podem ser escritos em grego.
O problema que encontrei foi que a maioria dos exemplos para iniciantes usa "define anônimo" quando você deve usar um "ID de string".
anônimo define
definir com o ID da string
Quando você usa define com um ID de string , evita esse erro ao tentar usar os módulos da seguinte maneira:
fonte
De acordo com os documentos :
fonte
Esteja ciente de que algumas extensões do navegador podem adicionar código às páginas. No meu caso, eu tinha um plug-in "Emmet em todas as áreas de texto" que mexia com os meus requireJs. Certifique-se de que nenhum código extra seja adicionado ao seu documento, inspecionando-o no navegador.
fonte
As respostas existentes explicam bem o problema, mas se a inclusão de seus arquivos de script usando ou antes do requireJS não é uma opção fácil, devido ao código legado, uma solução alternativa para hackers é remover o require do escopo da janela antes da tag do script e depois restabelecê-lo depois. Em nosso projeto, isso está envolvido por uma chamada de função do servidor, mas efetivamente o navegador vê o seguinte:
Não é o mais arrumado, mas parece funcionar e economizou bastante refração.
fonte
script
elementos.(function(){ var define = undefined; // the UMD registration code won't find the global 'define' anymore! // generated content goes here })()
Ou você pode usar essa abordagem.
<script data-main="js/app.js" src="js/require.js"></script>
O que ele fará irá carregar seu script após o carregamento do require.js .
fonte