生产模式下合并的JS和CSS不起作用


24

我处于开发人员模式,一切都很棒,当我更改为生产模式时,CSS和JS的合并选项似乎被忽略了,它重新列出了所有css和js。

此外,产品页面仅以开发人员模式显示产品图片,更改为生产模式后它们会消失。

有想帮助我的想法吗?


关键是,我正在这样做。

这是我依次执行的操作:

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento setup:static-content:deploy

bin/magento setup:di:compile

bin/magento deploy:mode:set production

bin/magento setup:static-content:deploy

在开始之前,“合并”选项为“是”,并且我处于开发人员模式。


您好,您对此问题有任何解决方案吗,我在magento 2.0.7中也遇到了同样的问题。如果有的话,请给出解决方案,谢谢
Ashish Jagnani

我面临的同样问题,请帮助我
辛格

Answers:


19

我只是做了以下事情,问题就解决了:

bin / magento设置:升级

bin / magento索引器:重新索引

bin / magento部署:模式:设置生产-s

#这就是秘密:在生产后运行di:compile
bin / magento设置:di:compile  

bin / magento设置:静态内容:部署

2
我以同样的方式尝试了但没有运气
Pradeep Kumar

这对我有用。
dchayka

如果我执行命令“ production -s”,它会清空我的站点并给出非常不常见的错误:警告:include(/ siteRoot / html / var / view_preprocessed / html / vendor / magento / module-theme / view / base / templates / root。 phtml):无法打开流:/siteRoot/html/vendor/magento/framework/View/Result/Page.php在第312行上没有此类文件或目录
Jai

另一个-对我有用。万一其他人遇到我的问题了。尽管可以在管理中启用选项,但CSS会最小化并捆绑在一起,而JS不会。在设置产品模式下添加-s可以改变所有情况。而且,后端现在也快得多。我使用了相同的命令和命令,但不同之处是“ -s”,谢谢
dawhoo

我首先需要切换回开发模式吗?我做了你所提到的,但是没有什么区别....
Jilco Tigchelaar

2

确保同时检查NGINX配置文件。

如果$MAGE_MODE设置了变量,则也需要将其更改production为保存文件

之后,您将需要根据自己的喜好重新加载或重新启动NGINX。

sudo service nginx reload

要么

sudo service nginx restart

之后,检查app/etc/env.php并查看MAGE_MODE数组键是否也设置为production(如果未将其更改为),production或者可以使用以下命令

php bin/magento deploy:mode:set production

执行命令后,检查值是否更改app/etc/env.php,有时可能存在权限问题。

接下来,清理pub/static文件夹。

rm -rf pub/static/*

清除/刷新缓存

php bin/magento cache:clean
php bin/magento cache:flush 

现在您可以执行静态内容部署了

php bin/magento setup:static-content:deploy

希望这可以帮助。


1

我有类似的问题。没有图像的原因是因为缩小 JS 后JS文件中有错误。您可以在浏览器中验证它(萤火虫等)。

... / div>';返回__p};})(jQuery的窗口,文档,位置,类型!=='undefined'&& jQu

我通过删除var / cache /中的所有文件解决了这个问题pub / static /并再次设置:static-content:部署

但是还有另一个问题,那就是是否启用它。由于另一个JS错误,Braintree没有显示。

错误:以下脚本错误:https : //js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

... Error(id,msg,err,requireModules){var e = new Error(msg +'\ nhttp://requirejs.org/doc ...

现在,在找到解决方案之前,我只是不使用minify js函数来避免麻烦。


1

这些是在Magento ver上对我有用的步骤。2.1.7使用Redis(不运行Varnish)。但是,目前尚不清楚是否一切正常。JS被缩小并捆绑在一起(不清楚应该进行的合并)。CSS被缩小(看不到合并)。

  1. 关闭所有Magento缓存。
  2. 清除Redis缓存。
  3. 打开所有五个css / js配置(通过管理员或通过数据库)。
  4. 生成静态文件。
  5. 清除Magento缓存(命令行)。为了安全(可能不是必需的)。
  6. 清除opcache(如果未设置为自动刷新)。
  7. 刷新前端主页(并检查浏览器控制台中是否有错误)。
  8. 打开Magento缓存。

dev / css / merge_css_files = 1 dev / css / minify_files = 1 dev / js / enable_js_bundling = 1 dev / js / merge_files = 1 dev / js / minify_files = 1

仅仅打开配置并清除缓存是行不通的-前端浏览器控制台报告了很多js错误。


合并会将您的文件合并为一个。
ladle3000 '18 -10-5

0

您是否尝试刷新JavaScript / CSS?您可以在系统>缓存管理下执行此操作,然后按表格底部左侧“ Flus JavaScript / CSS Cache”的按钮


是的...。刷新js,然后缓存。没变化。但是,如果我切换到开发人员模式,则合并有效。
BrunoBueno

0

在生产模式下启用此选项后,需要重新部署静态。


关键是,我正在这样做。我刚刚在这里发布了我所做的事情。
BrunoBueno

如果不起作用,则可能是权限问题。您能否检查您的Web服务器访问/错误日志
KAndy

0

我只是做了以下工作,问题就解决了。

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(这是秘密,在生产后运行di:compile)

bin/magento setup:static-content:deploy

0

当JavaScript未编译时,jquery选择器无法正常工作。

$('#my_element')。click(function(){alert('Hello World');});

但是一旦编译,压缩和加入,我就需要编写代码:

$('body #my_element')。click(function(){alert('Hello World');});

不要问为什么,似乎直接从缓存中读取时,requirejs代码在domReady之前执行,并且元素附加到不同页面中的不同元素。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.