Magento2 no lee mis requirejs-config.js

17

Hola, soy nuevo en Magento2 e intento descubrir cómo funciona RequireJS en Magento.

Aquí está mi situación:

Tengo el siguiente módulo:

app/code/Mymodule/Test/view/frontend/requirejs-config.js

Aquí está el contenido de este archivo:

var config = {
map: {
    '*': {
        jQuery110: "Mymodule_Test/js/jquery-1.10.2",
        jqueryNoConflict: 'Mymodule_Test/js/jquery.no-conflict',
        flexslider: 'Mymodule_Test/js/jquery.flexslider-min',
        header: 'Mymodule_Test/js/store/header'
    }
}
};

Mi tema está en esta ubicación:

app/design/frontend/Mycompany/Basic

Mis Javascripts están en la siguiente ubicación:

app/code/Mymodule/Test/view/frontend/web/js/jquery.no-conflict.js
app/code/Mymodule/Test/view/frontend/web/js/jquery.flexslider-min.js
app/code/Mymodule/Test/view/frontend/web/js/store/header.js

En el archivo PHTML:

app/code/Mymodule/Test/view/frontend/templates/home.phtml

Agregué las líneas:

require(['jqueryNoConflict', 'flexslider'],function($, flexslider){
    (function($) {
        $(window).load(function () {
            $('.flexslider').flexslider();
        });
    })(jQuery);
});

Cuando reviso mi página en el navegador, obtengo un error 404 con las rutas:

http://mag2.com.local/pub/static/frontend/Mycompany/Basic/en_US/flexslider.js

Pero si cambio la línea require [] a esto:

 require(['Mymodule_Test/js/jquery.no-conflict', 'Mymodule_Test/js/jquery.flexslider-min'],function($, flexslider){
        (function() {
            $(window).load(function () {
                $('.flexslider').flexslider();
            });
        })(jQuery);
    });

Los archivos se están cargando.

También borré el caché, mi tema es correcto, ejecuté el comando:

php bin/magento setup:static-content:deploy

Por lo tanto, no puedo entender por qué mi requirejs-config.js no se carga. Seguí la documentación también.

Por favor ayuda

Ashutosh
fuente
¿Qué pasa si desea usar algún archivo js personalizado en todas las páginas, no relacionado con el módulo? ¿Cuál es la forma correcta de hacerlo? Por favor, no me remita a la página oficial de Magento.
Anitr

Respuestas:

27

Encontré el problema.

En pub / static / _requirejs / frontend / Namespace / Theme / en_US , elimine el archivo requirejs-config.js .

Actualice su página y se generará nuevamente con nuevo contenido.

Si no funciona, elimine requirejs-config.js y ejecute los siguientes comandos:

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile
Ashutosh
fuente
¿Es posible incluir prototype.js?
Slimshadddyyy
Gracias ... Funciona para mí ... :) +1 de mi parte
Prashant Patil
11

El problema es que no habilitaste el modo desarrollador. Como resultado, el caché de archivos está en la pub/staticcarpeta.

Kandy
fuente
77
Para habilitar el modo de desarrollador, puede presionar el siguiente comando en CLI php bin / magento deploy: mode: set developer
Bhupendra Jadeja
6

Después del comando Implementar, debe configurar el modo de desarrollador y borrar la memoria caché. Está funcionando bien.

php bin/magento deploy:mode:set developer && php bin/magento cache:clean

También borre la memoria caché del navegador para ver el efecto.

Rakesh Jesadiya
fuente
1

Esto puede ayudar a otra persona con un problema muy similar en local con nginx. El bloque / static no se estaba reescribiendo correctamente y esto debía agregarse según este comentario https://github.com/magento/magento2/issues/7869#issuecomment-268585438

location /static/ {
    if ($MAGE_MODE = "production") {
      expires max;
    }

    # Remove signature of the static files that is used to overcome the browser cache
    location ~ ^/static/version {
      rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
    }

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
      add_header Cache-Control "public";
      add_header X-Frame-Options "SAMEORIGIN";
      expires +1y;

      if (!-f $request_filename) {
        rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
      }
    }

    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
      add_header Cache-Control "no-store";
      add_header X-Frame-Options "SAMEORIGIN";
      expires off;

      if (!-f $request_filename) {
         rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
      }
    }

    if (!-f $request_filename) {
      rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
    }

    add_header X-Frame-Options "SAMEORIGIN";
}
Joshua Fricke
fuente
0

Asegúrese de que el .htacessarchivo exista en la pub/staticcarpeta. y luego aplique el comando de despliegue.

Shashank Kumrawat
fuente
-1

Puede seguir los pasos a continuación y se solucionará.

1) Establezca el modo de implementación en producción - php magento deploy: mode: set production (la minificación js y css funcionará con el modo de producción. Si está en modo desarrollador con el código minimizado, los problemas anteriores aparecerán tal como lo experimenté. Si la minificación lo deshabilitó, puede mantener el modo desarrollador. También verifique usando echo the print_r ($ _ SERVER) en index.php que el modo de producción o el modo desarrollador se configuraron correctamente antes de cargar el sitio web)

2) Borrar todas las configuraciones de cachés en el servidor

  • /etc/init.d/nginx restart
  • /etc/init.d/php5.6-fpm restart
  • /etc/init.d/varnish restart

3) Borre el caché del navegador y véalo en modo incógnito. ¡Eso es!

¡Salud!

Dasitha Abeysinghe
fuente
OP no menciona si se usan Apache o Nginx. Es casi seguro asumir que es Apache.
Chris K