typescript - ReferenceError: Response განსაზღვრული არ არის msw/node + Vitest-თან
ძალიან მაინტერესებს, ხვედრია თუ ვიღაცას შეხვდა შემდეგი პრობლემა ნ უახლეს msw (2.0.9) და ეს ცდილობს განახორციელოს უახლეს Vite (5.0.2) + Vitest (0.34.6)-თან ერთად? რასაც არ უნდა ვაკეთებდე, ვერ გადავდივარ ამ შეცდომას, რომ Response რაღაც ახსნა შეუძლებელია, მიუხედავად იმისა, რომ მაქვს დამონტაჟებული cross-fetch და ასევე @types/node.
ჩემთვის მოხსნილი TypeScript-ის ვერსია არის 5.3.2, რომელიც არ აკმაყოფილებს msw-ის peerDependency-ს, რომელიც შენახულია 5.2.x, მაგრამ მე დავაწესე ვერსიის შემცირება მოთხოვნებთან შესაბამისობისთვის და მაინც მივიღე იგივე შეცდომა.
ReferenceError: Response is not defined
❯ node_modules/.pnpm/[email [email /node_modules/msw/lib/core/HttpResponse.mjs:5:28
❯ src/setupTests.ts:3:31
1| import "@testing-library/jest-dom";
2| import fetch from "cross-fetch";
3| import { setupServer } from "msw/node";
| ^
რეფერენციისთვის, ჩემი vite.config.ts შემდეგნაირია:
import react from "@vitejs/plugin-react";
import { defineConfig } from "vite";
import { configDefaults } from "vitest/config";
export default defineConfig({
plugins: [react()],
server: {
host: true,
port: 4000,
},
define: {
"process.env": {
VERSION: process.env.VERSION,
PLAYWRIGHT: process.env.PLAYWRIGHT,
USE_MSW: process.env.USE_MSW,
},
},
resolve: {
mainFields: ["module"],
alias: {
src: "/src",
},
},
test: {
environment: "jsdom",
globals: true,
setupFiles: "./src/setupTests.ts",
watch: false,
// Need to concat with config defaults otherwise node_modules get tested
exclude: [...configDefaults.exclude, "src/e2e/*"],
coverage: {
provider: "istanbul",
exclude: [".eslintrc.cjs", "src/index.tsx", "playwright.config.ts", ".github/*"],
all: true,
lines: 100,
functions: 100,
branches: 100,
statements: 100,
reporter: ["json", "lcov", "text", "cobertura"],
},
},
});
იმედი მაქვს, ვინმეს შეუძლია დახმარება.
პასუხი #1
მოახერხა საბოლოოდ მისი გადალახვა მას შემდეგ, რაც ბევრი სხვადასხვა რამ სცადა. როგორც აღმოჩნდა, ერთადერთი, რაც საჭირო იყო setupTests.ts-ში გაკეთებულიყო, შემდეგია:
import "cross-fetch/polyfill";
პასუხი #2
ამჟამად ამ პრობლემას ვაწყდები, როდესაც დავდებ AWS გარემოში, რომელიც იყენებს Node 16-ს. (ეს პრობლემა დაფიქსირდა პაიპლაინში შექმნის პროცესში). ვთხოვე Middleware-ს განახლებულ ვერსიაზე გადასვლა, შედეგად Node ვერსიის 16-დან 18-მდე გადატანა და გულშემატკივრობა პრობლემის გადაჭრის იმედით.
ჩემი ადგილობრივი უფრო მაღალია 18-ზე, ამიტომ ტესტები კარგად მუშაობს იქ.
