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)
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)
Respostas:
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();
}
});
});
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.js
e cole o conteúdo vendor/magento/js/module-checkout-agreements/view/frontend/web/js/view/agreement-validation.js
nele. Remova o comentário da devolução e reimplante o conteúdo estático.
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.
Para mim, eu estava usando um Magento Js Mixin e exigi que o modelo fosse ajustado de maneira ligeiramente diferente, conforme descrito nos documentos do Magento aqui: https://devdocs.magento.com/guides/v2.3/javascript-dev-guide/javascript/js_mixins .html