การผสาน 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: อัปเกรด

เครื่องมือสร้างดัชนี bin / magento: reindex

bin / magento ปรับใช้: โหมด: set production -s

# นี่คือความลับ: เรียกใช้ di: รวบรวมหลังจากการผลิต
การตั้งค่า bin / magento: di: compile  

การตั้งค่า bin / magento: เนื้อหาคงที่: ปรับใช้

2
ฉันลองแบบเดียวกัน แต่ไม่มีโชค
Pradeep Kumar

สิ่งนี้ใช้ได้สำหรับฉัน
dchayka

หากฉันดำเนินการคำสั่ง "การผลิต -s" มันทำให้เว็บไซต์ของฉันว่างเปล่าและให้ข้อผิดพลาดที่ผิดปกติมาก: คำเตือน: include (/ siteRoot / html / var / view_preprocessed / html / ผู้จำหน่าย / magento / โมดูล / ธีม / ดู / ฐาน / แม่แบบ / รูท 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 คุณสามารถตรวจสอบได้ในเบราว์เซอร์ของคุณ (firebug ฯลฯ )

... / div> '; return __p};}) (หน้าต่างเอกสารตำแหน่งประเภทของ jQuery! ==' undefined '&& jQu

ฉันแก้ไขได้โดยลบไฟล์ทั้งหมดในvar / cache /และpub / static /และการตั้งค่า: เนื้อหาคงที่: ปรับใช้อีกครั้ง

แต่ยังมีอีกปัญหาหนึ่งมันเกี่ยวกับสิ่งมีชีวิตหากคุณเปิดใช้งาน เบรนทรีไม่แสดงเนื่องจากข้อผิดพลาด JS อื่น

ข้อผิดพลาด: ข้อผิดพลาดสคริปต์สำหรับ: https://js.braintreegateway.com/v2/braintree.js http://requirejs.org/docs/errors.html#scripterror

... ข้อผิดพลาด (id, msg, err, ต้องการโมดูล) {var e = ข้อผิดพลาดใหม่ (msg + '\ nhttp: //requirejs.org/doc ...

สำหรับตอนนี้ฉันไม่ได้ใช้ฟังก์ชัน minify js เพื่อหลีกเลี่ยงปัญหาจนกว่าจะพบวิธีแก้ไข


1

นี่คือขั้นตอนที่เหมาะกับฉันใน Magento ver 2.1.7 พร้อม Redis (ไม่ได้เคลือบเงา) อย่างไรก็ตามมันยังไม่ชัดเจนว่าทุกอย่างทำงานได้ตามที่ควร JS มีขนาดเล็กและรวมเป็นกลุ่ม (ไม่ชัดเจนว่าควรผสานอะไร) CSS มีการย่อให้เล็กลง (ไม่เห็นผสาน)

  1. ปิด Magento cache ทั้งหมด
  2. ล้างแคช Redis
  3. เปิดการตั้งค่า css / js ทั้งห้า (ทั้งใน admin หรือผ่านฐานข้อมูล)
  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

0

คุณพยายามที่จะล้าง JavaScript / CSS? คุณสามารถทำได้ภายใต้ระบบ> การจัดการแคชแล้วกดปุ่มที่อยู่ด้านล่างของตารางทางด้านซ้าย 'Flus JavaScript / CSS Cache'


ใช่ .... ล้างข้อมูล js จากนั้นแคช ไม่มีอะไรเปลี่ยนแปลง. อย่างไรก็ตามหากฉันสลับไปที่โหมดนักพัฒนาระบบการผสานจะทำงานได้
BrunoBueno

0

คุณต้องปรับใช้แบบคงที่หลังจากเปิดใช้งานตัวเลือกนี้ในโหมดการผลิต


ประเด็นคือฉันทำมัน ฉันเพิ่งโพสต์ที่นี่สิ่งที่ฉันทำ
BrunoBueno

หากไม่ได้ผลอาจมีปัญหาในการขออนุญาต คุณช่วยตรวจสอบการเข้าถึงเว็บเซิร์ฟเวอร์ / บันทึกข้อผิดพลาดได้
ไหม

0

ฉันเพิ่งทำสิ่งต่อไปนี้และแก้ไขปัญหาได้แล้ว

bin/magento setup:upgrade

bin/magento indexer:reindex

bin/magento deploy:mode:set production -s

bin/magento setup:di:compile

(นี่คือความลับเพื่อเรียกใช้ di: รวบรวมหลังการผลิต)

bin/magento setup:static-content:deploy

0

ฉันพบปัญหาเมื่อ JavaScript ไม่ได้รวบรวมตัวเลือก jquery

$ ('# my_element'). คลิก (ฟังก์ชั่น () {การแจ้งเตือน ('Hello World');});

แต่เมื่อรวบรวมบีบอัดและเข้าร่วมแล้วฉันต้องรหัส: -

$ ('body #my_element'). คลิก (ฟังก์ชั่น () {alert ('Hello World');});

อย่าถามว่าทำไมดูเหมือนว่าเมื่ออ่านโดยตรงจากแคชโค้ด requirejs จะเรียกใช้งานก่อน domReady และองค์ประกอบแนบกับองค์ประกอบต่าง ๆ ในหน้าอื่น ๆ



-1
  1. โปรดเปิดใช้งานตัวเลือก "เปิดใช้งาน JavaScript บันเดิล"

    store-> configuration-> advanced-> developer-> การตั้งค่า javascript->

  2. เปิดใช้งานชุด JavaScript Bundling เป็น "ใช่" และล้างแคช


2
คำแนะนำจับจดที่ไม่มีส่วนเกี่ยวข้องกับคำถาม
ladle3000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.