Skip to content

Getting "Could not resolve msw" when using with vite  #65

@dlvhdr

Description

@dlvhdr

Description

I tried using this library but couldn't make it work.

  • I'm using msw for quite some time
  • I tried to integrate source with our browser handlers
  • Getting this error: Could not resolve "msw"

Reproduction steps

  1. Use vite with a few react plugins, including @modyfi/vite-plugin-yaml to load open api specs in YAML:
    react(),
    viteTsconfigPaths(),
    nodePolyfills({
      // Whether to polyfill `node:` protocol imports.
      protocolImports: true,
      globals: {
        Buffer: true,
        global: true,
        process: true,
      },
    }),
    svgrPlugin({
      svgrOptions: { dimensions: true },
    }),
	viteYaml(),
  1. Declare a browser handler:
import { fromOpenApi } from "@mswjs/source/open-api";

import spec from "./swagger.yaml";

export const testHandlers = await fromOpenApi(JSON.stringify(spec));
  1. Define the worker:
import { SetupWorker, setupWorker } from "msw/browser";

import { browserHandlers } from "./browserHandlers";
import { testHandlers } from "./responseMocks/healthHandlers";

let wrk: SetupWorker = {} as SetupWorker;
wrk = setupWorker(...browserHandlers, ...testHandlers);
  1. Run vite
  2. Get error
yarn run v1.22.22
$ VITE_ENABLE_MSW_MOCKS=true yarn start:bundler
$ ./scripts/verify_host_file.sh && vite
Re-optimizing dependencies because lockfile has changed

  VITE v5.4.8  ready in 612 ms

  ➜  Network: https://local.app.komodor.local:3000/
  ➜  press h + enter to show help
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db

Why you should do it regularly:
https://github.com/browserslist/browserslist#browsers-data-updating
✘ [ERROR] Could not resolve "msw"

    ../../node_modules/@mswjs/source/lib/open-api/from-open-api.js:1:34:
      1 │ import { HttpHandler, http } from 'msw';
        ╵                                   ~~~~~

  You can mark the path "msw" as external to exclude it from the bundle, which will remove this
  error and leave the unresolved path in the bundle.

/Users/dlvhdr/code/komodor/mono/node_modules/esbuild/lib/main.js:1472
  let error = new Error(text);
              ^

Error: Build failed with 1 error:
../../node_modules/@mswjs/source/lib/open-api/from-open-api.js:1:34: ERROR: Could not resolve "msw"
    at failureErrorWithLog (/Users/dlvhdr/code/komodor/mono/node_modules/esbuild/lib/main.js:1472:15)
    at /Users/dlvhdr/code/komodor/mono/node_modules/esbuild/lib/main.js:945:25
    at /Users/dlvhdr/code/komodor/mono/node_modules/esbuild/lib/main.js:1353:9
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  errors: [Getter/Setter],
  warnings: [Getter/Setter]
}

Node.js v18.18.2
error Command failed with exit code 1.

Expected behavior

Initial assessment

  • I'm not sure if the top-level await has anything to do with it

Screenshots

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions