ข้อผิดพลาดหลังจากอัปเกรดจาก EXTJS 4.2 เป็น EXTJS 6.x

จนถึงตอนนี้ ฉันได้ทำการอัปเกรดด้วยสองวิธี:

1) ฉันตั้งค่า sencha app generate [appName] ใหม่ และโอนไฟล์และไดเรกทอรี 4.2 ไปที่ 6.x หลังจากตั้งค่าแล้ว จะเกิดข้อผิดพลาดเมื่อทำการ sencha app build:

The following error occurred while executing this line:
/var/www/html/backoffice-test/EcommBackoffice/.sencha/app/build-impl.xml:381: The following error occurred while executing this line:
/var/www/html/backoffice-test/EcommBackoffice/.sencha/app/init-impl.xml:382: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : Ext.ux.grid.filters.Filters
rareyes@MAKDL-RAREYES:/var/www/html/backoffice-test/EcommBackoffice$

นอกจากนี้ เมื่อโหลดแอป ข้อผิดพลาดของคอนโซลยังระบุบรรทัดเหล่านี้:

http://localhost:1841/EcommBackoffice/Overrides/view/Table.js?_dc=1452581765612`
http://localhost:1841/EcommBackoffice/Overrides/selection/Model.js?_dc=1452581765612`
[E] [Ext.Loader] Some requested files failed to load.
[E] [Loader] The following classes failed to load:
[E] [Loader] Overrides.view.Table from Overrides/view/Table.js
[E] [Loader] Overrides.selection.Model from Overrides/selection/Model.js
[E] [Loader] EcommBackoffice.Application from app/Application.js

2) เนื่องจากติดอยู่กับวิธีแรก แนวทางที่สองของฉันคือการทำ sencha app upgrade -ext บนแอปพลิเคชันที่มีอยู่ อัปเดตสำเร็จแล้ว ยกเว้นเมื่อทำ sencha app build จะมีข้อผิดพลาดที่คล้ายกัน เช่น:

The following error occurred while executing this line:
/var/www/html/backoffice-2.0/src/main/webapp/.sencha/app/build-impl.xml:381: The following error occurred while executing this line:
/var/www/html/backoffice-2.0/src/main/webapp/.sencha/app/init-impl.xml:382: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : Ext.ux.grid.FiltersFeature

และข้อผิดพลาดคอนโซลสั้น ๆ ของ: Uncaught ReferenceError: Ext is not defined

สิ่งนี้เกิดขึ้นเมื่อฉันแก้ไข index.html และแทนที่ x-compile snippet:

<!-- <x-compile> -->

<!-- <x-bootstrap> -->
<link rel="stylesheet" href="/thbootstrap.css">
<script src="ext/ext-all-debug-w-comments.js"></script>
<script src="bootstrap.js"></script>
<!-- </x-bootstrap> -->
<script src="app.js"></script>

<!-- </x-compile> -->

สำหรับสิ่งนี้:

<script id="microloader" data-app="a32fd6d2-db0c-4c4b-a6a2-4185b3ee3fd4" type="text/javascript" src="bootstrap.js"></script>

ก่อนที่จะแก้ไข index.html มีข้อผิดพลาดอื่นเกิดขึ้นพร้อมกับ x-compile:

/.sencha/app/init-impl.xml:382: com.sencha.exceptions.ExBuild: Mixed-Mode x-compile and microload markup is currently unsupported

นี่คือเหตุผลว่าทำไมฉันถึงเลือกใช้ Microloader ที่รองรับโดย 6.x

ฉันค่อนข้างหลงทางที่นี่ เห็นได้ชัดว่า ExtJS ไม่มีคู่มือ Sencha ที่เหมาะสมในการอัพเกรดโดยตรงจาก 4.x เป็น 6.x โดยจะอัปเกรดให้สูงขึ้นเพียงขั้นตอนเดียวเท่านั้น เช่น 4.x เป็น 5.x และ 5.x เป็น 6.x ถึงกระนั้น คำแนะนำสำหรับสิ่งเหล่านี้ก็ยังไม่ชัดเจนนัก และ IMHO ก็ขาดเอกสารประกอบ

ใครบ้างที่สามารถชี้ได้ว่าปัญหาเกิดจากข้อผิดพลาดที่ฉันให้ไว้ที่ไหน


person ralphcarlo    schedule 12.01.2016    source แหล่งที่มา
comment
สำหรับไฟล์ที่ร้องขอบางไฟล์ไม่สามารถโหลดได้ ให้ไปที่คอนโซลและดำเนินการบรรทัดนี้ --› Ext.Loader.missingQueue และลองค้นหาสาเหตุที่การเปลี่ยนชื่อไฟล์ไม่โหลด .. Ext.Loader.missingQueue จะให้คิวไฟล์ที่เหลือที่แน่นอนแก่คุณ   -  person Abhijit Muke    schedule 12.01.2016


คำตอบ (1)


ข้อความแสดงข้อผิดพลาด Cmd บอกว่าดังและชัดเจน:

Unknown definition for dependency : Ext.ux.grid.filters.Filters

ซึ่งหมายความว่า ExtJS6 ไม่มี Ext.ux.grid.filter.Filters ซึ่งจำเป็นในแอปพลิเคชันของคุณ

ตามที่ระบุไว้ในเอกสาร Ext ทุกอย่างจาก Ext.ux เนมสเปซไม่ปลอดภัยในการอัปเกรด เนื่องจากเป็นเนื้อหาที่ผู้ใช้จัดทำซึ่ง Sencha พบว่ามีประโยชน์และเพิ่มลงในไฟล์ zip Ext โดยปกติคุณเพียงแค่ค้นหาอินเทอร์เน็ตเพื่อหาการใช้งาน ExtJS 6.0.x ของฟีเจอร์ ux ที่ขาดหายไปจากไฟล์ zip อย่างเป็นทางการ หรือเขียนด้วยตัวเอง

แต่สำหรับกรณีพิเศษของคุณ ฉันเชื่อว่าพวกเขาย้าย gridfilters จาก ux ไปยังสาขาอย่างเป็นทางการใน ExtJS 4.2.x จากนั้นจึงลบนามแฝงใน ExtJS 5 และสุดท้ายใน ExtJS 6 พวกเขาแทนที่ฟีเจอร์นี้ด้วยปลั๊กอิน

ดังนั้นโปรดดูที่ Ext.grid.filters.Filters ฉันเชื่อว่ามันทำได้ตามที่คุณต้องการ แต่คุณจะต้องเขียนโค้ดบางส่วนใหม่เพื่อใช้งาน (เปลี่ยนความต้องการ ย้ายการอ้างอิงจากฟีเจอร์ไปยังปลั๊กอิน ซึ่งอาจรวมถึงการเปลี่ยนแปลงอื่นๆ ด้วย)

ฉันคิดว่าข้อความแสดงข้อผิดพลาดที่สอง ("[E] [Ext.Loader] บางไฟล์ที่ร้องขอไม่สามารถโหลดได้") มีความหมายเหมือนกับข้อความแรก และฉันคาดว่าจะมีบางอย่างเช่น requires:['Ext.ux.grid.filters.Filters'] ใน Overrides/view/Table.js (Overrides.selection.Model ไม่ได้โหลดเพราะต้องใช้ Overrides.view.Table และ EcommBackoffice.Application ไม่ได้โหลดเพราะอ้างอิง Overrides.selection.Model)

person Alexander    schedule 12.01.2016