Bagaimana cara menggunakan Magang dengan TypeScript dan webpack?

Apakah mungkin? Ketika saya mencoba mengimpor Magang seperti ini dalam pengujian saya:

import * as registerSuite from 'intern!object'

dan kemudian saya menjalankan webpack untuk mengubah tes *.ts saya, saya mendapatkan kesalahan berikut:

TS2307: Tidak dapat menemukan modul 'magang!objek'.

Haruskah saya menambahkan beberapa pengetikan? Saya baru mengenal TypeScript, webpack, dan Intern — tidak dapat memahami apa yang saya lewatkan.


person Anatoly Ukhvanov    schedule 28.04.2017    source sumber


Jawaban (2)


Ya, Anda perlu menambahkan referensi ke pengetikan magang di bagian include dari tsconfig.json Anda, seperti yang dijelaskan dalam tutorial ini.

Namun ini hanya akan membuat Anda melewati langkah kompilasi. Saat runtime, Anda memerlukan pemuat yang memahami referensi modul seperti intern!object dan menanganinya persis seperti yang diharapkan oleh pekerja magang.

Saya tidak tahu apakah ada pemuat atau plugin seperti itu untuk webpack, saya hanya dapat menemukan satu masalah tentangnya di repo magang, dan tampaknya tidak ada penyelesaian apa pun.

Secara umum Intern 3 mengandalkan dojo loader yang dibundel dengan intern. Orang-orang yang mencoba menggunakan loader lain sendirian, dan tidak ada solusi umum yang muncul.

Untuk magang 4 (yang merupakan pembaruan besar dan belum dirilis), ada rencana untuk 'hapus ketergantungan loader dari Magang', tetapi saya tidak tahu apakah sesuatu yang spesifik akan dilakukan (atau bahkan perlu dilakukan) untuk mendukung webpack.

person artem    schedule 28.04.2017

Sebenarnya, hal ini mungkin terjadi, seperti yang dikatakan Dylan Schiemann — CEO di SitePen, perusahaan yang membuat Intern (kalau tidak salah): https://www.sitepen.com/blog/2015/03/24/testing-typescript-with-intern/#comment-3280004472

Bukti konsep ini adalah proyek Dojo 2 yang juga dibuat oleh SitePen: https://github.com/dojo/widget-core/ Dibuat dalam TypeScript, dan menggunakan webpack dan Intern untuk pengujian.

Namun sayangnya belum ada tutorial dokumentasi tentang cara melakukan hal ini.

Dylan juga mengatakan, pada versi berikutnya dari Intern (v4) loader internal Intern akan dihapus, dan dengan demikian, masalah ini akan hilang, namun Intern 4 saat ini masih dalam keadaan pra-beta, meskipun relatif stabil.

person Anatoly Ukhvanov    schedule 29.04.2017