reactjs - React-ის ტესტი არ მუშაობს Vite + Vitest-თან გამოყენების დროს
მე ვიღებ შემდეგ შეცდომას, როდესაც ვაშვებ npm test (რომელიც ირთავს vitest):
შეცდომა src/Applications/components/ApplicationsTable/ApplicationsTable.test.tsx [ src/Applications/components/ApplicationsTable/ApplicationsTable.test.tsx ] შეცდომა: დირექტორიის იმპორტი '{internalNpmPackage}/build/components' არ არის მხარდაჭერილი ES მოდულების გარჩევისთვის, რომლებიც იმპორტირებულია {internalNpmPackage}/build/index.js-იდან ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ სერილიზებული შეცდომა: { code: 'ERR_UNSUPPORTED_DIR_IMPORT', url: 'file:///Users/me/{myProject}/node_modules/{internalNpmProject}/build/components' }
სადაც 'internalNpmPackage' არის შიდა npm პაკეტი (მონაწილე react კომპონენტების ბიბლიოთეკა) და 'myProject' არის react პროექტი, რომელსაც ვტესტავ.
პროექტი კარგად მუშაობს vite-თან, უბრალოდ ტესტირების დროს მაქვს ეს პრობლემა.
‘internalNpmPackage’ არის რეაქტ კომპონენტების კოლექცია, რომელიც ექსპორტირებულია და პროექტის სერვირებისას კარგად იმპორტირებულია.
მე ვიყენებ React-ს, TS-ს, Vite-ს და Vitest-ს.
როდესაც მე ვაკავშირებ these პაკეტებს ადგილობრივად (გამოიყენება Yalc, მსგავსად npm link - კარგად მუშაობს)
პასუხი #1
გააქტიურეთ დირექტორიის ინდექსის იმპორტი, თუ ჯერ არ გაკეთებულა. თუ თქვენი მიმდინარე იმპორტის განაცხადი არის import { component1, component2} from '{internalNpmPackage}/build/components',
ცადო შეცვალო ეს
import { component1, component2} from '{internalNpmPackage}/build/components/index.js'გადახედეთ - https://nodejs.org/api/esm.html#mandatory-file-extensions
თუ ზემოხსენებული გადაწყვეტა თქვენთვის არ მუშაობს, გთხოვთ, გაგვიზიაროთ იმპორტის განაცხადი, რომელიც წარმოშობს შეცდომას, შიდა პაკეტის package.json და ასევე თქვენი პროექტის საქაღალდის სტრუქტურა
პასუხი #2
მისი პასუხი იყო, რომ იგი დაემატა 'test'-ის ქვეშ vite კონფიგურაციაში:
server: {
deps: {
inline: ['{internalNpmPackage}'],
},
},
ვერ ვხედავ Vite დოკუმენტაციას:
Vite დაამუშავებს ინლაინის მოდულებს. ეს შეიძლება გამოსადეგი იყოს პაკეტებისათვის, რომლებიც განათავსებენ .js ESM ფორმატში (რომელსაც Node ვერ გაუმკლავდება).
