Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'Error: No known conditions for "./node" specifier in "msw" package' when using MSW with Vitest #125

Open
cat841 opened this issue Nov 3, 2023 · 3 comments

Comments

@cat841
Copy link

cat841 commented Nov 3, 2023

Trying to import and use any function from MSW (specifically, msw/node) when running vitest prints this error:

 FAIL  src/testfile.test.ts [ src/testfile.test.ts ]
Error: No known conditions for "./node" specifier in "msw" package
 ❯ e node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:21445:25
 ❯ n node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:21445:646
 ❯ o node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:21445:1297
 ❯ resolveExportsOrImports node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28746:20
 ❯ resolveDeepImport node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28765:31
 ❯ tryNodeResolve node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28453:20
 ❯ Context.resolveId node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28212:28
 ❯ Object.resolveId node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:44276:32
 ❯ TransformContext.resolve node_modules/.pnpm/vite@4.5.0_@types+node@20.8.10/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:43992:23

This only happens when this plugin is present, removing it seems to fix the issue.

Not sure if this is a bug in the plugin, or a problem on msw's side, or if I'm maybe doing something wrong?

@sanghunjlee
Copy link

Had the same issue earlier today.

For those visiting this issue searching for solution, I went around this issue by adding an alias to resolve in the config file:

// vite.config.ts

export default defineConfig({
  // ...otherConfigs,
  resolve: {
    alias: [
      { find: "msw/node", replacement: "/node_modules/msw/lib/native/index.mjs"}
    ],
  }
})

Hope that helps.

@nknapp
Copy link

nknapp commented Mar 19, 2024

I created an mswjs/msw#2092 at msw, but they said it's a problem of the framework (i.e. solid).

I still have to try the workaround they proposed, but the reason for the error is that vite-plugin-solid sets "browser" as resolve.conditions here.

This means that vite tries to load the browser-version of msw/node which does not exist.

According to @kettanaito it is wrong to use browser for node.js, I personally think it is debatable.

What I also noticed is that solid returns and empty render function when the resolve.conditions is set to "node". I don't really undestand why, but it seems wrong to assume that Node.js is only ever used for SSR.

@nknapp
Copy link

nknapp commented Mar 23, 2024

So, after some more insights, my last statement is wrong. My current stance is that the package.json of mock-service-worker is not entirely correct. The resolve.conditions applied in this module actuall contains node. So it should be possible to load msw/node

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants