javascript - วิธีใช้ Intern กับ TypeScript และ webpack?
มันเป็นไปได้เลยหรือ? เมื่อฉันลองนำเข้า Intern แบบนี้ในการทดสอบของฉัน:
import * as registerSuite from 'intern!object'
แล้วฉันก็รัน webpack เพื่อแปลงไฟล์ทดสอบ *.ts ของฉัน ฉันก็เจอข้อผิดพลาดดังต่อไปนี้:
TS2307: ไม่สามารถหาโมดูล 'intern!object' ได้.
ฉันควรเพิ่มการพิมพ์บางอย่างไหม? ฉันเพิ่งเริ่มใช้ TypeScript และ webpack และ Intern — ไม่เข้าใจว่าฉันพลาดอะไรไป
คำตอบ #1
ใช่ คุณจำเป็นต้องเพิ่มการอ้างอิงไปยังการพิมพ์ของอินเทิร์นในส่วน include ของ tsconfig.json ของคุณ ตามที่อธิบายในบทช่วยสอนนี้
แต่นี่จะช่วยให้คุณผ่านขั้นตอนการคอมไพล์เท่านั้น ในขณะรันไทม์ คุณจะต้องมีตัวโหลดที่เข้าใจการอ้างอิงโมดูลเช่น intern!object และจัดการมันตามที่ intern คาดหวังให้ทำงาน
ฉันไม่รู้ว่ามีตัวโหลดหรือปลั๊กอินแบบนั้นสำหรับ webpack หรือไม่ ฉันสามารถหาปัญหาเกี่ยวกับมันได้เพียงหนึ่งเรื่องในรีโปของ intern และดูเหมือนว่าจะไม่มีการแก้ไขใด ๆ
โดยทั่วไปแล้ว Intern 3 ใช้ตัวโหลด dojo ซึ่งรวมมากับ intern คนที่พยายามใช้ตัวโหลดอื่นต้องทำเอง และยังไม่มีวิธีแก้ปัญหาที่เป็นที่นิยมออกมา
สำหรับ Intern 4 (ซึ่งเป็นการอัปเดตใหญ่และยังไม่ได้ปล่อยออกมา) มีแผนที่จะ 'ลบการพึ่งพา loader ออกจาก Intern' แต่ฉันไม่แน่ใจว่าจะมีการทำสิ่งใดโดยเฉพาะ (หรือแม้แต่ต้องทำ) เพื่อรองรับ webpack หรือไม่
คำตอบ #2
จริงๆ แล้ว นี่เป็นไปได้ ตามที่ Dylan Schiemann กล่าว — ซีอีโอของ SitePen บริษัทที่สร้าง Intern (ถ้าฉันจำไม่ผิด): https://www.sitepen.com/blog/2015/03/24/testing-typescript-with-intern/#comment-3280004472
หลักฐานของแนวคิดนี้คือโครงการ Dojo 2 ซึ่งสร้างโดย SitePen เช่นกัน: https://github.com/dojo/widget-core/ เขียนด้วย TypeScript และใช้ webpack และ Intern สำหรับการทดสอบ
แต่โชคร้ายที่ยังไม่มีเอกสารหรือบทเรียนสอนวิธีการทำสิ่งนี้เลย
ไดแลนยังกล่าวด้วยว่า ในเวอร์ชันถัดไปของ Intern (v4) ตัวโหลดภายในของ Intern จะถูกลบออก และด้วยเหตุนี้ ปัญหานี้จะหายไป แต่ Intern 4 ยังอยู่ในสถานะก่อนเบต้า แม้ว่าจะค่อนข้างเสถียรแล้ว