web-dev-qa-db-ja.com

Magento2がrequirejs-config.jsを読み取らない

私はMagento2を初めて使用し、RequireagentがMagentoでどのように機能するかを理解しようとしています。

これが私の状況です:

次のモジュールがあります:

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

私のJavaScriptは次の場所にあります。

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が読み込まれない理由を理解できません。ドキュメンテーションもフォローしました。

10
Ashutosh

問題が見つかりました。

pub/static/_requirejs/frontend/Namespace/Theme/en_USの下で、ファイルrequirejs-config.jsを削除します。

ページを更新すると、新しいコンテンツで再び生成されます。

16
Ashutosh

これは、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";
}
1
Joshua Fricke

詳細は こちら

他のメンバーからの要求に応じて、重要なビットを追加します。

ファイルシステムにロードしようとしているファイルが見つかるかどうかを確認します。そこにある場合は、代わりにWebサーバー構成の問題を示しています。ファイルの権限を確認していない場合は、静的コンテンツを展開します。

0
Asrar