Magento2 没有阅读我的 requirejs-config.js
Magento2 not reading my requirejs-config.js
我是 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
我的 Javascripts 在以下位置:
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 没有加载。我也遵循了文档。
我发现了问题。
在pub/static/_requirejs/frontend/Namespace/Theme/en_US下,删除文件requirejs-config.js。
刷新您的页面,它将再次生成新内容。
这可能会帮助其他人在本地使用 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/ 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= 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= last;
}
}
if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource= last;
}
add_header X-Frame-Options "SAMEORIGIN";
}
详细解释是here
应其他成员的要求,添加重要的位:
检查您是否可以找到它试图在文件系统上加载的文件。如果它在那里,它会指向一个网络服务器配置问题。如果不是检查文件权限,然后进行静态内容部署。
我是 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
我的 Javascripts 在以下位置:
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 没有加载。我也遵循了文档。
我发现了问题。
在pub/static/_requirejs/frontend/Namespace/Theme/en_US下,删除文件requirejs-config.js。
刷新您的页面,它将再次生成新内容。
这可能会帮助其他人在本地使用 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/ 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= 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= last;
}
}
if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource= last;
}
add_header X-Frame-Options "SAMEORIGIN";
}
详细解释是here
应其他成员的要求,添加重要的位:
检查您是否可以找到它试图在文件系统上加载的文件。如果它在那里,它会指向一个网络服务器配置问题。如果不是检查文件权限,然后进行静态内容部署。