프로덕션 모드에서는 병합 된 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

내가 직면하고있는 동일한 문제 저를 도와주세요
Rv Singh

답변:


19

방금 다음을 수행하고 문제가 해결되었습니다.

bin / magento 설정 : 업그레이드

빈 / 마 젠토 인덱서 : reindex

bin / magento deploy : 모드 : 세트 프로덕션 -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) : 스트림을 열지 못했습니다. 312 번째 줄의 /siteRoot/html/vendor/magento/framework/View/Result/Page.php에 해당 파일이나 디렉토리가 없습니다.
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> '; return __p};}) (window, document, location, type of jQuery! =='undefined '&& jQu

var / cache /의 모든 파일을 제거 하여이 문제를 해결했습니다.그리고 술집 / 정적 / 및 설정 : 정전기 내용 : 배포 다시

그러나 또 다른 문제가 있습니다. 활성화하면 브레인 트리에 관한 것입니다. 다른 JS 오류로 인해 Braintree가 표시되지 않습니다.

오류 : 스크립트 오류 : https://js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

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

지금은 솔루션을 찾을 때까지 문제를 피하기 위해 minify js 함수를 사용하지 않습니다.


1

Magento ver에서 나를 위해 일한 단계는 다음과 같습니다. 2.1.7 Redis 사용 (니스를 실행하지 않음). 그러나 모든 것이 제대로 작동하는지 확실하지 않습니다. JS가 축소되고 번들로 제공됩니다 (병합 대상이 무엇인지 확실하지 않음). CSS가 축소되었습니다 (병합되지 않은 상태).

  1. 모든 마 젠토 캐시를 끄십시오.
  2. redis 캐시를 지 웁니다.
  3. 5 개의 CSS / js 구성을 모두 켜십시오 (관리자 또는 데이터베이스를 통해).
  4. 정적 파일을 생성하십시오.
  5. Magento 캐시 (명령 줄)를 지 웁니다. 안전을 위해 (필요하지 않을 수도 있음).
  6. opcache를 지 웁니다 (자동 새로 고침으로 설정되지 않은 경우).
  7. 프론트 엔드 홈 페이지를 새로 고치십시오 (그리고 브라우저 콘솔에 오류가 있는지 확인하십시오).
  8. 마 젠토 캐시를 켭니다.

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

0

JavaScript / CSS를 플러시하려고 했습니까? 시스템> 캐시 관리에서이 작업을 수행 한 다음 왼쪽 'Flus JavaScript / CSS Cache'의 테이블 하단에있는 버튼을 누릅니다.


예 .. js를 플러시 한 다음 캐시합니다. 변화가 없습니다. 그러나 개발자 모드로 전환하면 병합이 작동합니다.
BrunoBueno

0

프로덕션 모드에서이 옵션을 활성화 한 후 정적을 다시 배포해야합니다.


요점은 내가하고있는 것입니다. 방금 내가 한 일을 여기에 게시했습니다.
BrunoBueno

작동하지 않으면 문제 일 수 있습니다. 웹 서버 액세스 / 오류 로그를 확인할 수 있습니까
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');});

캐시에서 직접 읽을 때 domReady 및 요소가 다른 페이지의 다른 요소에 연결되기 전에 requirejs 코드가 실행되는 것처럼 보이는 이유를 묻지 마십시오.



-1
  1. "JavaScript 번들 활성화"옵션도 활성화하십시오

    store-> configuration-> advanced-> developer-> javascript setting->

  2. JavaScript 번들을 "yes"로 설정하고 캐시 플러시


2
질문과 관련이없는 Haphazard 조언.
ladle3000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.