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

私の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がロードされない理由を理解することはできません。ドキュメントにも従いました。

助けてください


モジュールに関係なく、すべてのページでカスタムjsファイルを使用する場合はどうでしょうか。それを行う正しい方法は何ですか?Magentoの公式ページを参照しないでください。
Anitr 16

回答:


27

問題が見つかりました。

下でパブ/静的/ _requirejs /フロントエンド/名前空間/テーマ/ en_USの、ファイル削除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で次のコマンドを入力します
。phpbin

6

Deployコマンドの後、開発者モードを設定し、キャッシュをクリアする必要があります。うまく動作します。

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


-1

以下の手順に従うと修正されます。

1)展開モードを本番に設定-php magento deploy:mode:set production -php(jsおよびcssミニフィケーションはプロダクションモードで動作します。開発者モードで上記のコードを縮小した場合、問題は私が経験したように表示されます。開発者モードを維持できます。また、index.phpのprint_r($ _ SERVER)を使用して、Webサイトをロードする前にプロダクションモードまたは開発者モードが正しく設定されていることを確認してください)

2)サーバーのすべてのキャッシュ設定をクリアします

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

3)ブラウザのキャッシュをクリアし、シークレットモードで表示します。それでおしまい!

乾杯!


OPは、ApacheまたはNginxが使用されているかどうかについて言及していません。Apacheであると想定するのはほぼ安全です。
クリスK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.