Obtendo TypeError: $ .widget não é uma função Magento 2

9

Estou recebendo um erro de tipo JavaScript no Minicart, na página de exibição do produto e na página do Google Checkout .

TypeError: $.widget is not a function
           $.widget('mage.priceBox')
           $.widget('mage.dataPost')

Como posso resolver isso?

Nikul
fonte
Você executou o comando deploy?
Rakesh Jesadiya
Sim, eu estou executando o comando deploy, mas ainda estou recebendo erro.
Nikul
você tem que o conteúdo da pasta remover primeiro pub / estática depois que você tem que executar o comando para implantar
Rakesh Jesadiya
Oi Rakesh Qualquer comando para remover a pasta pub / static usando o comando
Nikul
você tem que remover manualmente
Rakesh Jesadiya

Respostas:

8

Eu tive o mesmo problema usando o Porto Theme. No meu caso, às vezes o jQuery foi reconhecido, às vezes não. Infelizmente, não entendi a causa, mas encontrei uma solução.

Em resumo: mesclar todos os arquivos javascript.

  1. No Backend, vá para:

Stores -> Configuration -> Advanced -> Developer -> JavaScript Settings

  1. Ativar:

    • Ativar agregação de JavaScript
    • Mesclar arquivos JavaScript
    • Minimizar arquivos JavaScript (opcional)
  2. Não recomendado para implantar os arquivos estáticos

bin/magento setup:static-content:deploy

  1. Limpar cache em System -> Cache Management

    • Na Additional Cache Managementregião, escolha o botãoFlush CSS/Javascript Cache
    • E Flush Magento Cachedepois

Agora limpe o cache no navegador e recarregue.

Para o desenvolvimento desta solução não é satisfatório, mas pelo menos produtivo, use-a deve ser uma boa solução de trabalho, sem comportamento imprevisível.

Espero que ajude..

sagacidade
fonte
isso me ajudou, obrigado. Eu tive o mesmo problema
bourax
Eu apenas fiz o flush CSS / Javascript e Magento Cache e funcionou, mas sua resposta pode ajudar em outros casos! Em dev env. somos obrigados a deixar as otimizações de JS desativadas, a depuração torna-se difícil, caso contrário, e também raramente usamos o comando deploy, a atualização da página aciona essa geração estática de arquivos. Obrigado !
medmek
Eu acho que isso tem algo a ver com requirejs-config.js ... às vezes map: { '*': {é usado, e às vezes paths: {...
Black
4

Eu também tive esse problema, mas depois deparei com este artigo: http://www.danjoseph.me/2016/09/16/magento-2-widget-not-function/

No artigo, ele explica que o jquery estava sendo carregado uma segunda vez na página e, portanto, substituindo a versão carregada anteriormente pelo magento. Para mim, era um script de marketing que também carregava o jquery por algum motivo. O jQuery deve ser carregado apenas uma vez na cabeça por essa tag e todas as outras devem ser removidas.

<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="jquery" src="http://seatup.local/pub/static/frontend/Seatup/theme/en_US/jquery.js"></script>

Cypher909
fonte
-4

Vá para a pasta do tema e localize o seguinte arquivo na pasta Magento_Theme

default_head_blocks.xml

e substitua

<script src="jquery.js" />

com

<remove src="jquery.js" />

Certifique-se de limpar o cache e atualizar a página.

Eu tive o mesmo problema e o resolvi usando o método acima.

Nausif
fonte
Fazendo isso, você está removendo o jQuery. É verdade que resolve o erro descrito na pergunta, mas agora outras coisas estão quebradas, por exemplo, relacionadas ao bootstrap. Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
slayerbleast
Remover o jQuery não é a maneira correta de lidar com isso. É um mau conselho.
Cypher909