reactjs - Ujian React tidak berfungsi menggunakan Vite + Vitest
Saya mendapat ralat berikut semasa menjalankan npm test (yang memanggil vitest):
GAGAL src/Applications/components/ApplicationsTable/ApplicationsTable.test.tsx [ src/Applications/components/ApplicationsTable/ApplicationsTable.test.tsx ] Ralat: Import direktori '{internalNpmPackage}/build/components' tidak disokong untuk menyelesaikan modul ES yang diimport dari {internalNpmPackage}/build/index.js ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Ralat Bersiri: { code: 'ERR_UNSUPPORTED_DIR_IMPORT', url: 'file:///Users/me/{myProject}/node_modules/{internalNpmProject}/build/components' }
Di mana 'internalNpmPackage' ialah pakej npm dalaman (perpustakaan komponen react yang dikongsi) dan 'myProject' ialah projek react yang saya sedang uji.
Projek ini berjalan lancar dengan vite, cuma semasa ujian saya mendapat masalah ini.
'internalNpmPackage' adalah satu koleksi komponen React yang dieksport, dan boleh diimport dengan baik semasa menjalankan projek.
Saya menggunakan React, TS, Vite dan Vitest.
Apabila saya pautkan pakej-pakej ini secara setempat (menggunakan Yalc, serupa dengan npm link - ia berfungsi dengan baik)
Jawapan #1
Cuba import indeks direktori jika belum dilakukan. Jika kenyataan import anda sekarang ialah import { component1, component2} from '{internalNpmPackage}/build/components',
cuba tukarkannya kepada
import { component1, component2} from '{internalNpmPackage}/build/components/index.js'Rujuk - https://nodejs.org/api/esm.html#mandatory-file-extensions
Jika penyelesaian di atas tidak berkesan untuk anda, sila kongsi kenyataan import anda yang menyebabkan ralat, fail package.json bagi pakej dalaman dan juga struktur folder projek anda
Jawapan #2
Jawapan kepada ini adalah dengan menambah ke konfigurasi vite di bawah 'test':
server: {
deps: {
inline: ['{internalNpmPackage}'],
},
},
Menurut dokumen vite:
Vite akan memproses modul yang disisipkan. Ini boleh membantu untuk mengendalikan pakej yang menghantar .js dalam format ESM (yang Node tidak dapat kendalikan).
