Magento2 recebendo erro 'Constr não é um construtor' para tema personalizado

7

Não tenho certeza do que é esse erro e se está afetando algo, no entanto, isso está chegando ao meu console:

layout.js:64 Uncaught TypeError: Constr is not a constructor (layout.js line 64)
PHPDev76
fonte
Estou tendo o mesmo problema. Você pode dar mais informações sobre isso?
Max
Estou tendo o mesmo problema.
55840

Respostas:

13

Para quem também pode encontrar esse problema: Eu tive o mesmo problema com meus componentes JavaScript personalizados. Acabou que um pequeno erro de digitação nos meus arquivos JS estava causando o problema. Em vez de define()usar require()por cima. Então, para encerrar tudo, aqui está um exemplo de um componente JavaScript personalizado:

define([
  'uiComponent'
], function(
  uiComponent
) {
  "use strict";

  /**
   * Return the UI Component
   */
  return uiComponent.extend({
    /**
     * Initialization method
     */
    initialize: function () {
      this._super();
    }
  });
});
Giel Berkers
fonte
Obrigado, o mesmo aqui. Aconteceu quando eu portado algum código que não seja componente de interface do usuário que era necessário antes para um componente.
23417 Alex
2

Este é um erro no JS do validador de contrato. ( vendor/magento/js/module-checkout-agreements/view/frontend/web/js/view/agreement-validation.js)

Aqui você vê: //return Component.extend({}); Isso não deve ser comentado, pois quebra o segundo parâmetro da função de fogo do jquery. Porém, não tenho certeza se isso quebra alguma coisa, mas o resultado é esse erro e, em alguns casos, quando os termos e contratos são definidos manualmente, o botão de pedido não funciona.

Até que isso seja corrigido pelo Magento, você poderá criar uma substituição para esse JS na sua própria pasta de temas. Para fazer isso, adicione o seguinte arquivo:

app/design/frontend/<ThemeNameSpace>/<Theme>/Magento_CheckoutAgreements/web/js/view/agreement-validation.jse cole o conteúdo vendor/magento/js/module-checkout-agreements/view/frontend/web/js/view/agreement-validation.jsnele. Remova o comentário da devolução e reimplante o conteúdo estático.

J. Spoelstra
fonte
1
Na 2.2.4, essa linha não é comentada, mas o erro ainda aparece.
vaso123 25/05
0

Eu enfrentei o mesmo problema. A causa do problema declarei o mesmo local do arquivo js, ​​que já é usado no arquivo Core.

Por exemplo, tentei reestruturar os blocos de totais de resumo de pedidos usando meu arquivo js personalizado, como

"components": {
     "block-totals": {
              "component": "Magento_Checkout/js/summary/totals",                          
                  }
             }

Mas no mesmo local já existe um totals.js em magento-checkout / frontend / web / js / summary / totals.js.

Renomeei o nome do arquivo como

"component": "Magento_Checkout/js/summary/showtotals",

Agora não tenho erros !! e o total de totais do meu pedido foi substituído.

seeni
fonte