Magento2가 requirejs-config.js를 읽지 못합니다


17

안녕하세요, Magento2를 처음 사용하고 Magento에서 RequireJS가 어떻게 작동하는지 알아 내려고 노력했습니다.

내 상황은 다음과 같습니다.

다음 모듈이 있습니다.

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

이 파일의 내용은 다음과 같습니다.

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'
    }
}
};

내 테마는이 위치에 있습니다.

app/design/frontend/Mycompany/Basic

내 자바 스크립트는 다음 위치에 있습니다.

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

PHTML 파일에서 :

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

나는 줄을 추가했다 :

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

브라우저에서 페이지를 확인하면 경로에 404 오류가 발생합니다.

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

그러나 require [] 줄을 다음과 같이 변경하면 :

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

파일이로드 중입니다.

또한 캐시를 지우고 테마가 정확하고 명령을 실행했습니다.

php bin/magento setup:static-content:deploy

따라서 requirejs-config.js 가로 드되지 않는 이유를 알 수 없습니다. 나는 또한 문서를 따랐다.

도와주세요


모듈과 관련이없는 모든 페이지에서 일부 사용자 정의 js 파일을 사용하려면 어떻습니까? 올바른 방법은 무엇입니까? 저를 Magento 공식 페이지로 안내하지 마십시오.
Anitr

답변:


27

나는 문제를 발견했다.

아래 술집 / 정적 / _requirejs / 프론트 엔드 / 네임 스페이스 / 테마 / ko 페이지 , 파일 삭제 requirejs-config.js을 .

페이지를 새로 고침하면 새로운 콘텐츠로 다시 생성됩니다.

작동하지 않으면 requirejs-config.js를 삭제하고 다음 명령을 실행하십시오.

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile

prototype.js를 포함시킬 수 있습니까?
Slimshadddyyy

감사합니다 .. 그것은 나를 위해 작동합니다 .. :) +1
Prashant Patil

11

문제는 개발자 모드를 활성화하지 않았다는 것입니다. 결과적으로 파일 캐시는 pub/static폴더에 있습니다.


7
개발자 모드를 활성화하려면 CLI에서 다음 명령을 칠 수 모드 : PHP 빈 / 젠토의 배포 세트 개발자
Bhupendra Jadeja

6

배포 명령 후 개발자 모드를 설정하고 캐시를 지워야합니다. 잘 작동합니다.

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

또한 브라우저 캐시를 지우면 효과가 나타납니다.


1

이것은 nginx와 로컬에서 매우 비슷한 문제를 가진 다른 사람을 도울 수 있습니다. / static 블록이 올바르게 다시 작성되지 않았으며이 의견에 따라 추가해야했습니다. 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";
}

0

폴더에 .htacess파일이 있는지 확인하십시오 pub/static. 그런 다음 deploy 명령을 적용하십시오.


-1

아래 단계를 수행하면 문제가 해결됩니다.

1) 배포 모드를 프로덕션으로 설정 -PHP magento deploy : mode : set production (js 및 css 축소는 프로덕션 모드에서 작동합니다. 개발자 모드에서 위의 코드가 축소 된 문제는 경험했던 것처럼 나타납니다. 개발자 모드를 유지할 수 있습니다. 또한 index.php에서 print_r ($ _ SERVER) echo를 사용하여 웹 사이트를로드하기 전에 프로덕션 모드 또는 개발자 모드가 올바르게 설정되어 있는지 확인하십시오)

2) 서버에서 모든 캐시 설정을 지 웁니다.

  • /etc/init.d/nginx 재시작
  • /etc/init.d/php5.6-fpm 재시작
  • /etc/init.d/varnish 재시작

3) 브라우저 캐시를 지우고 시크릿 모드로 봅니다. 그게 다야!

건배!


OP는 Apache 또는 Nginx 사용 여부를 언급하지 않습니다. 아파치라고 가정하는 것이 거의 안전합니다.
Chris K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.