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-ზე, ამიტომ ტესტები კარგად მუშაობს იქ.