Estou construindo uma página da web normal que exige que carregue cerca de cinco arquivos CSS e dez arquivos Javascript.
- Ao carregá-los separadamente na página HTML, minha página da web carrega bem.
Agora, para a produção, concatenei todo o Javascript em um único arquivo, na ordem necessária, e todo o CSS em outro arquivo. Mas quando tento executar a página da web com os arquivos concatenados, ocorre um erro dizendo:
Uncaught TypeError: undefined is not a function
Na linha onde jquery.min.js está sendo carregado no arquivo Javascript concatenado.
O que posso fazer para atenuar isso? Quero concatenar todos os arquivos e reduzi-los para produção. Por favor ajude.
EDITAR: Eu combinei o Javascript e o CSS na ordem em que estavam quando foram carregados individualmente e estavam funcionando bem.
javascript
jquery
minify
ghostCoder
fonte
fonte
undefined
se você não tem nenhum código para mostrar?Respostas:
Supondo que o problema ainda não foi resolvido, muitos arquivos individuais não terminam seu código com um ponto e vírgula. A maioria dos scripts jQuery termina com
(jQuery)
e você precisa ter(jQuery);
.Como arquivos separados, o script carregará perfeitamente, mas como um arquivo individual você precisa dos pontos-e-vírgulas.
fonte
Pode ser necessário verificar novamente a ordem em que você está mesclando os arquivos, deve ser algo como:
fonte
Esta solução funcionou para mim
Mova seu código dentro do fechamento e use $ em vez de jQuery
Encontrei a solução acima em /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
depois de pesquisar muito
fonte
Recebi o mesmo erro por ter duas referências a versões diferentes do jQuery.
Na minha página mestra:
E também na página:
fonte
Tive esse problema recentemente com o plug-in de validação jQuery , usando o Squishit , obtendo também o erro js:
Eu consertei alterando a referência ao arquivo jquery.validate.js não minimizado, em vez de jquery.validate.min.js.
Eu acho que a versão reduzida de certos arquivos, quando mais compactados usando Squishit, por exemplo, pode em alguns casos não lidar com pontos-e-vírgulas ausentes e coisas do tipo, como @Dustin sugere, então você pode ter que experimentar com quais arquivos você pode compactar duplamente, e que você apenas deixa para o Squishit ou o que quer que esteja fazendo.
fonte
Para aqueles que ainda não conseguiram consertar isso, fiz isso mudando meu 'this' para '$ (this)' ao usar jQuery.
POR EXEMPLO:
Fixo:
fonte
Eu tive o mesmo problema, quando nomeada erroneamente variável com o mesmo nome, como função.
Então, é isso:
falhou, gerando a mensagem de erro mencionada de OP.
A solução para isso foi tão simples quanto alterar a linha acima para:
Não sei o quanto ajuda nessa situação, mas decidi colocar essa resposta para outras pessoas que buscam uma solução para problemas semelhantes.
fonte
Sim, eu também corrigi-lo mudando nas bibliotecas js para o não minimizado.
Por exemplo, na tag, altere:
Para:
Saindo do 'min' como não reduzido.
Obrigado pela ideia.
fonte
Lembre-se: as funções Javascript são sensíveis a maiúsculas e minúsculas.
Tive um caso em que tenho certeza de que meu código seria executado sem problemas. Mesmo assim, obtive um erro e verifiquei o console Javascript do Google Chrome para verificar o que é.
Minha linha de erro é
E recebeu a mesma mensagem de erro:
Nada parece errado com o código acima, mas ele não estava funcionando. Resolvi o problema por quase uma hora e então comparei com meu outro código em execução. Meu erro é que ele foi definido como
SetAttribute
, o que deveria sersetAttribute
.fonte
Caso haja algum idiota por aí como eu, tive esse problema frustrante porque esqueci um simples
new
palavra-chave antes de instanciar um novo objeto.
fonte
Acabei de receber a mesma mensagem com o seguinte código (em IcedCoffeeScript):
Isso me pareceu um código ICS normal. Desdobrei a construção await-defer para CoffeeScript regular:
O que realmente aconteceu foi que eu tentei passar 1 função de retorno de chamada (com 2 parâmetros) para funcionar
f
esperando dois parâmetros, efetivamente não configuradoscb
dentrof
, os quais o compilador relatou corretamenteundefined is not a function
.O erro aconteceu porque eu colei cegamente o código clichê do estilo de retorno de chamada.
f
não precisa de umerr
parâmetro passado para ele, portanto, deve ser simplesmente:No caso geral, eu recomendo verificar novamente as assinaturas e invocações de função para aridades correspondentes. A pilha de chamadas na mensagem de erro deve ser capaz de fornecer dicas úteis.
Em seu caso especial, eu recomendo procurar por definições de função aparecendo duas vezes no arquivo mesclado, com assinaturas diferentes, ou atribuições a funções de retenção de variáveis globais.
fonte
Certifique-se de comentar qualquer comentário. Às vezes, ao copiar e colar, você deixará de fora o "/ *!"
Além disso, quando você entrar no console, eles listarão seus erros e você deve fazer um de cada vez. Se você vir "Uncaught SyntaxError: Unexpected token *", isso pode significar que ele está lendo seu arquivo js e não está passando da primeira linha.
/ *! * jquery.tools 1.1.2 - A biblioteca de IU ausente para a 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/ * Arquivo gerado: Quarta, 07 de outubro 09:40:16 GMT 2009 * /
fonte
Eu entendi isso quando acidentalmente passei muitos parâmetros para uma função jquery que esperava apenas um parâmetro de retorno de chamada.
Para outras soluções de problemas: certifique-se de verificar todas as chamadas de função jquery para parâmetros extras.
fonte