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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions