จะใช้ Intern กับ TypeScript และ webpack ได้อย่างไร

เป็นไปได้ไหม? เมื่อฉันพยายามนำเข้า Intern เช่นนี้ในการทดสอบ:

import * as registerSuite from 'intern!object'

จากนั้นฉันเรียกใช้ webpack เพื่อแปลการทดสอบ *.ts ของฉัน ฉันได้รับข้อผิดพลาดต่อไปนี้:

TS2307: ไม่พบโมดูล 'intern! object'

ฉันควรเพิ่มการพิมพ์บ้างไหม? ฉันเพิ่งเริ่มใช้ TypeScript และ webpack และ Intern — ไม่สามารถเข้าใจสิ่งที่ฉันขาดหายไป


person Anatoly Ukhvanov    schedule 28.04.2017    source แหล่งที่มา


คำตอบ (2)


ใช่ คุณต้องเพิ่มการอ้างอิงถึง การพิมพ์ฝึกงาน ในส่วน include ของ tsconfig.json ของคุณ ตามที่อธิบายไว้ใน ในบทช่วยสอนนี้

แต่นี่จะทำให้คุณผ่านขั้นตอนการคอมไพล์ไปได้เท่านั้น ที่รันไทม์ คุณต้องมีตัวโหลดที่เข้าใจการอ้างอิงโมดูล เช่น intern!object และจัดการในลักษณะที่ผู้ฝึกงานคาดหวังให้โมดูลทำงาน

ฉันไม่รู้ว่ามีตัวโหลดหรือปลั๊กอินดังกล่าวสำหรับ webpack หรือไม่ ฉันพบปัญหาเดียวเกี่ยวกับมันใน intern repo และดูเหมือนว่าจะไม่มีวิธีแก้ปัญหาใดๆ

โดยทั่วไป Intern 3 อาศัย dojo loader ซึ่งรวมเข้ากับ intern ผู้ที่พยายามใช้รถตักอื่นๆ จะต้องอยู่คนเดียว และไม่มีวิธีแก้ปัญหาทั่วไปเกิดขึ้น

สำหรับการฝึกงาน 4 (ซึ่งเป็นการอัปเดตครั้งใหญ่และยังไม่เผยแพร่) มีแผนที่จะ 'ลบการพึ่งพาตัวโหลดออกจาก Intern' แต่ฉันไม่รู้ว่าจะต้องทำอะไรบางอย่างโดยเฉพาะ (หรือจำเป็นต้องทำ) เพื่อรองรับ webpack หรือไม่

person artem    schedule 28.04.2017

จริงๆ แล้ว สิ่งนี้เป็นไปได้ ดังที่ Dylan Schiemann กล่าว — CEO ของ 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 ในการทดสอบ

แต่น่าเสียดายที่ยังไม่มีเอกสารการสอนเกี่ยวกับวิธีการทำเช่นนี้

Dylan ยังกล่าวอีกว่าในเวอร์ชันถัดไปของ Intern (v4) ตัวโหลดภายในของ Intern จะถูกลบออก และดังนั้นปัญหานี้จะหายไป แต่ขณะนี้ Intern 4 ยังอยู่ในสถานะก่อนเบต้า แม้ว่าจะค่อนข้างเสถียรก็ตาม

person Anatoly Ukhvanov    schedule 29.04.2017