JS e CSS mesclados não funcionam quando o modo de produção


24

Eu estava no modo de desenvolvedor , tudo estava ótimo, quando mudei para o modo de produção , as opções mescladas de CSS e JS parecem ser ignoradas, estava novamente listando todos os css e js.

Além disso, a página do produto mostra apenas as imagens do produto no modo de desenvolvedor, depois de mudar para o modo de produção, elas desaparecem.

Alguma idéia para me ajudar?


O ponto é que estou fazendo isso.

Aqui está o que eu fiz em sequência:

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento setup:static-content:deploy

bin/magento setup:di:compile

bin/magento deploy:mode:set production

bin/magento setup:static-content:deploy

E antes mesmo de começar, as opções de Mesclagem são SIM e eu estava no modo de desenvolvedor.


Olá, Você tem alguma solução para este problema, estou recebendo o mesmo problema no magento 2.0.7. Por favor, dar a solução se você tiver qualquer, Graças
Ashish Jagnani

mesmo problema que estou enfrentando, por favor me ajude
Rv Singh

Respostas:


19

Fiz o seguinte e o problema foi resolvido:

configuração bin / magento: atualização

indexador bin / magento: reindex

bin / magento deploy: mode: definir produção -s

# Aqui estava o segredo: execute o di: compile após a produção
configuração bin / magento: di: compile  

configuração bin / magento: static-content: deploy

2
i tentou mesma maneira, mas sem sorte
Pradeep Kumar

Isso funcionou para mim.
dchayka

Se eu executar o comando "production -s" em branco no meu site e der um erro muito incomum: Aviso: include (/ siteRoot / html / var / view_preprocessed / html / vendor / magento / module-theme / view / base / templates / root. phtml): falha ao abrir o fluxo: Não existe esse arquivo ou diretório em /siteRoot/html/vendor/magento/framework/View/Result/Page.php na linha 312
Jai

Outro - que funcionou para mim. Caso alguém mais esteja tendo o problema que eu estava. O CSS reduziria e agruparia, mas o JS não, apesar de ter as opções ativadas no administrador. A adição de -s no modo de produto definido fez toda a diferença. Além disso, o back-end é MUITO mais rápido agora também. Eu estava usando a mesma ordem e comandos, mas foram os "-s" que fizeram a diferença, obrigado
dawhoo 26/03

Preciso primeiro voltar ao modo de desenvolvimento? Eu fiz o que você mencionou, mas nenhuma diferença ....
Jilco Tigchelaar

2

Verifique também o arquivo de configuração do NGINX.

Se houver um $MAGE_MODEconjunto de variáveis , ele precisará ser alterado paraproduction e salve o arquivo

Depois disso, você precisará recarregar ou reiniciar o NGINX, dependendo da sua preferência.

sudo service nginx reload

OU

sudo service nginx restart

Depois disso, verifique seu app/etc/env.phpe veja se a MAGE_MODEchave da matriz está definida productioncomo boa, se não a altere para productionou se você pode usar o comando

php bin/magento deploy:mode:set production

Depois de executar o comando, verifique se o valor foi alterado app/etc/env.php, às vezes pode haver problemas de permissão.

Em seguida, limpe a pub/staticpasta.

rm -rf pub/static/*

Limpar / limpar seu cache

php bin/magento cache:clean
php bin/magento cache:flush 

Agora você está pronto para executar a implantação de conteúdo estático

php bin/magento setup:static-content:deploy

Espero que isto ajude.


1

Eu tenho o problema semelhante. A causa para nenhuma imagem é porque há um erro no arquivo JS após minify JS. Você pode verificá-lo no seu navegador (firebug etc).

... / div> '; return __p};}) (janela, documento, localização, tipo de jQuery! ==' indefinido '&& jQu

Eu resolvi isso removendo todo o arquivo em var / cache /e pub / static / and setup: static-content: deploy novamente

Mas ainda há outro problema, é sobre a árvore cerebral, se você a ativar. O Braintree não aparece devido a outro erro do JS.

Erro: erro de script para: https://js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

... Erro (id, msg, err, requireModules) {var e = new Erro (msg + '\ nhttp: //requirejs.org/doc ...

Por enquanto, simplesmente não uso a função minify js para evitar problemas até que a solução seja encontrada.


1

Estes são os passos que funcionaram para mim no Magento ver. 2.1.7 com Redis (não executando o Varnish). No entanto, ainda não está claro se tudo está funcionando como deveria. JS é compactado e empacotado (não está claro o que a mesclagem deve fazer). O CSS é reduzido (sem vê-lo mesclado).

  1. Desligue todo o cache do Magento.
  2. Limpar cache redis.
  3. Ative todas as cinco configurações de css / js (no admin ou via banco de dados).
  4. Gere arquivos estáticos.
  5. Limpe o cache do Magento (linha de comando). Por segurança (pode não ser necessário).
  6. Limpe o opcache (se não estiver definido para atualização automática).
  7. Atualize a página inicial do frontend (e verifique se há erros no console do navegador).
  8. Ative o cache do Magento.

dev / css / merge_css_files = 1 dev / css / minify_files = 1 dev / js / enable_js_bundling = 1 dev / js / merge_files = 1 dev / js / minify_files = 1

Simplesmente ativar as configurações e limpar o cache não funcionou - o console do navegador front-end relatou muitos erros js.


A mesclagem mesclará seus arquivos em um.
precisa saber é o seguinte

0

Você já tentou liberar o JavaScript / CSS? Você pode fazer isso em Sistema> Gerenciamento de cache e pressione o botão na parte inferior da tabela à esquerda 'Flus JavaScript / CSS Cache'


YEP .... liberar js, em seguida, cache. Nada muda. No entanto, se eu alternar para o modo Desenvolvedor, a mesclagem funcionará.
BrunoBueno

0

Você precisa reimplementar a estática depois de ativar esta opção no modo de produção.


O ponto é que estou fazendo isso. Acabei de publicar aqui o que fiz.
BrunoBueno

Se não funcionar, talvez o problema esteja com permissão. Você pode verificar o seu acesso webserver / log erros
Kandy

0

Eu fiz o seguinte e o problema foi resolvido.

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(Aqui estava o segredo, para executar o di: compile após a produção)

bin/magento setup:static-content:deploy

0

Eu tive o problema quando o JavaScript é descompilado, o seletor jquery funciona.

$ ('# my_element'). click (function () {alert ('Olá mundo');});

Mas uma vez compilado, compactado e ingressado, preciso codificar: -

$ ('body #my_element'). click (function () {alert ('Olá mundo');});

Não pergunte por que, ao ler diretamente a partir do cache, o código requirejs é executado antes do domReady e os elementos são anexados a elementos diferentes em uma página diferente.



-1
  1. Ative também a opção "Ativar agregação de JavaScript"

    armazenar-> configuração-> avançado-> desenvolvedor-> configuração de javascript->

  2. Habilitar JavaScript Bundling definido como "yes" E liberar cache


2
Conselho casual que não tem nada a ver com a pergunta.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.