【问题标题】:Magento2 not reading my requirejs-config.jsMagento2 没有读取我的 requirejs-config.js
【发布时间】:2016-04-01 02:26:56
【问题描述】:

我是 Magento2 的新手,并试图弄清楚 RequireJS 在 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 没有加载。我也遵循了文档。

【问题讨论】:

    标签: requirejs magento2


    【解决方案1】:

    我发现了问题。

    pub/static/_requirejs/frontend/Namespace/Theme/en_US 下,删除文件 requirejs-config.js

    刷新您的页面,它将使用新内容再次生成。

    【讨论】:

    • 在生产模式的2.2.3版本上,我删除了pub/static find pub/static -iname requirejs-config.js下的所有requirejs-config.js文件。它们不在 _requirejs 目录中,而是在例如pub/static/frontend/Magento/luma/en_US/requirejs-config.js。然后是 setup:static-content:deploy、刷新缓存、硬刷新和模块文件。
    • 你也可以使用命令行。 php bin/magento setup:upgrade 完成了这项工作。但感谢您的提示。节省了我很多时间
    • 救命,谢谢
    【解决方案2】:

    这可能会帮助其他人在本地使用 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";
    }
    

    【讨论】:

    • 救命答案:)
    【解决方案3】:

    详细解释是here

    应其他成员的要求,添加重要的位:

    检查您是否可以在文件系统上找到它尝试加载的文件。如果它在那里,它将指向 Web 服务器配置问题。如果不是检查文件权限,然后进行静态内容部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2013-11-17
      • 1970-01-01
      • 2016-03-31
      • 2017-06-02
      • 1970-01-01
      • 2012-05-17
      • 2016-03-22
      相关资源
      最近更新 更多