JS y CSS combinados no funcionan cuando el modo de producción

24

Estaba en modo desarrollador , todo fue genial, cuando cambié al modo Producción , las opciones fusionadas de CSS y JS parecen ignorarse, estaba de nuevo listando todos los css y js.

Además, la página del producto solo muestra las imágenes del producto en modo desarrollador, después de cambiar al modo de producción desaparecen.

¿Alguna idea para ayudarme?


El punto es que lo estoy haciendo.

Esto es lo que hice en secuencia:

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

Y antes incluso de comenzar, las opciones de fusión son SÍ y estaba en modo desarrollador.

BrunoBueno
fuente
Hola, ¿tiene alguna solución para este problema? Me aparece el mismo problema en magento 2.0.7. Por favor, dé la solución si tiene alguna, Gracias
Ashish Jagnani
mismo problema que estoy enfrentando, por favor
ayúdenme

Respuestas:

19

Acabo de hacer lo siguiente y el problema se resolvió:

configuración bin / magento: actualización

indexador bin / magento: reindex

bin / magento deploy: mode: set production -s

# Aquí estaba el secreto: ejecuta el di: compilar después de la producción
bin / magento setup: di: compile  

configuración bin / magento: contenido estático: desplegar
BrunoBueno
fuente
2
Lo intenté de la misma manera pero no tuve suerte
Pradeep Kumar
Esto funcionó para mí.
dchayka
Si ejecuto el comando "producción -s", deja en blanco mi sitio y da un error muy inusual: Advertencia: incluya (/ siteRoot / html / var / view_preprocessed / html / vendor / magento / module-theme / view / base / templates / root. phtml): no se pudo abrir la transmisión: no existe dicho archivo o directorio en /siteRoot/html/vendor/magento/framework/View/Result/Page.php en la línea 312
Jai
Otro, eso funcionó para mí. En caso de que alguien más tenga el problema que yo tenía. CSS se minificaría y agruparía, pero JS no, a pesar de tener las opciones habilitadas en el administrador. Agregar los -s en el modo de producto establecido marcó la diferencia. Además, el backend es MUCHO más rápido ahora también. Estaba usando el mismo orden y comandos, pero fueron las "-s" las que
marcaron
¿Necesito primero volver al modo de desarrollo? Hice lo que mencionaste, pero no hay diferencia ...
Jilco Tigchelaar
2

Asegúrese de verificar también su archivo de configuración NGINX.

Si hay un $MAGE_MODEconjunto de variables allí, también debe cambiarse productiony guardar el archivo

Después de eso, deberá volver a cargar o reiniciar NGINX según su preferencia.

sudo service nginx reload

O

sudo service nginx restart

Después de eso, verifique su app/etc/env.phpy vea si la MAGE_MODEclave de matriz también está configurada production, si no la cambia productiono puede usar el comando

php bin/magento deploy:mode:set production

Después de ejecutar el comando, verifique si el valor cambió app/etc/env.php, a veces puede haber problemas de permisos.

A continuación, limpie la pub/staticcarpeta.

rm -rf pub/static/*

Borrar / Vaciar su caché

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

Ahora está listo para ejecutar la implementación de contenido estático

php bin/magento setup:static-content:deploy

Espero que esto ayude.

Atish Goswami
fuente
1

Tengo el problema similar La causa de que no haya imagen es porque hay un error en el archivo JS después de minificar JS. Puede verificarlo en su navegador (firebug, etc.).

... / div> '; return __p};}) (ventana, documento, ubicación, tipo de jQuery! ==' undefined '&& jQu

Resolví esto eliminando todo el archivo en var / cache /y pub / static / y setup: static-content: despliegue nuevamente

Pero todavía hay otro problema, se trata del braintree si lo habilita. Braintree no aparece debido a otro error de JS.

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

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

Por ahora, simplemente no uso la función minify js para evitar el problema hasta que se encuentre la solución.


1

Estos son los pasos que me funcionaron en Magento ver. 2.1.7 con Redis (sin ejecutar Varnish). Sin embargo, todavía no está claro si todo funciona como debería. JS se minimiza y agrupa (no está claro qué se supone que debe hacer la fusión). CSS está minimizado (sin verlo combinado).

  1. Apague todo el caché de Magento.
  2. Borrar redis cache.
  3. Active las cinco configuraciones css / js (ya sea en el administrador o en la base de datos).
  4. Generar archivos estáticos.
  5. Borrar caché de Magento (línea de comando). Por seguridad (puede no ser necesario).
  6. Borrar opcache (si no está configurado para actualización automática).
  7. Actualice la página de inicio de la interfaz (y compruebe si hay errores en la consola del navegador)
  8. Activa el caché de 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

Simplemente encender las configuraciones y borrar el caché no funcionó: la consola del navegador frontend reportó muchos errores js.


Combinar combinará sus archivos en uno solo.
ladle3000

0

¿Has intentado eliminar el JavaScript / CSS? Puede hacerlo en Sistema> Administración de caché y luego presione el botón que se encuentra en la parte inferior de la tabla a la izquierda 'Flus JavaScript / CSS Cache'


YEP .... flush js, luego cache. Nada cambia. Sin embargo, si cambio al modo Desarrollador, la fusión funciona.
BrunoBueno

0

Debe volver a implementar static después de habilitar esta opción en modo de producción.


El punto es que lo estoy haciendo. Acabo de publicar aquí lo que hice.
BrunoBueno

Si no funciona, entonces el problema puede estar en el permiso. ¿Puede verificar el acceso a su servidor web / registro de errores?
KAndy

0

Acabo de hacer lo siguiente y el problema se resolvió.

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(Aquí estaba el secreto, para ejecutar el di: compilar después de la producción)

bin/magento setup:static-content:deploy

0

He tenido el problema cuando el JavaScript no está compilado, el selector jquery funciona.

$ ('# my_element'). click (function () {alert ('Hello World');});

Pero una vez compilado, comprimido y unido, necesito codificar:

$ ('body #my_element'). click (function () {alert ('Hello World');});

No pregunte por qué, parece que al leer directamente desde el caché, el código requirejs se ejecuta antes que domReady y los elementos se unen a elementos diferentes en alguna página diferente.

Dallas Clarke
fuente
-1
  1. Habilite también la opción "Habilitar agrupación de JavaScript"

    store-> configuration-> advanced-> developer-> javascript setting->

  2. Habilite la agrupación de JavaScript establecida en "sí" y vacíe la memoria caché

Sagar Dobariya
fuente
2
Consejos casuales que no tienen nada que ver con la pregunta.
ladle3000