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 ვერ გაუმკლავდება).