MockLanguageModelV2 break down when using provider-utils v3.0.10
Description
When upgrade provider-utils to v3.0.10, there is a dev dependent package msw, which makes the use of MockLanguageModelV2 break down.
The dependent chain is: MockLanguageModelV2 -> "ai/test" -> "@ai-sdk/provider-utils/test" -> "msw".
⨯ ./node_modules/.pnpm/@[email protected][email protected]/node_modules/@ai-sdk/provider-utils/dist/test/index.mjs:71:1
Module not found: Can't resolve 'msw'
AI SDK Version
No response
Code of Conduct
- [x] I agree to follow this project's Code of Conduct
running into the same error, but only on nextjs 16 for some reason
Works if you pnpm install msw, but that feels wrong
## Error Type
Build Error
## Error Message
Module not found: Can't resolve 'msw'
## Build Output
./node_modules/.pnpm/@[email protected][email protected]/node_modules/@ai-sdk/provider-utils/dist/test/index.mjs:70:1
Module not found: Can't resolve 'msw'
68 |
69 | // src/test/test-server.ts
> 70 | import { http, HttpResponse } from "msw";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
71 | import { setupServer } from "msw/node";
72 | import { beforeAll, beforeEach, afterAll } from "vitest";
73 | var TestServerCall = class {
Import trace:
App Route:
./node_modules/.pnpm/@[email protected][email protected]/node_modules/@ai-sdk/provider-utils/dist/test/index.mjs
./node_modules/.pnpm/[email protected][email protected]/node_modules/ai/dist/test/index.mjs
./apps/nextjs/src/app/(app)/larare/chat/api/route.ts
https://nextjs.org/docs/messages/module-not-found
Next.js version: 15.5.5 (Turbopack)
This is fixed in v6 beta. The problem is that in v5, we export the test server directly from the ai package. Adding msw as production dependency would mean everyone using ai would get it, although only a small fraction need it.
We now have a dedicated package for it: https://www.npmjs.com/package/@ai-sdk/test-server
@dancer has it on his backlog to backport it to v5, which should resolve the issue for v5 users as well.
we can consider moving the Mock* files into the regular package (not /test ) if that removes the dependency. seems like a more general usage pattern now
@ai-sdk/test-server has been backported.
Does the problem still occur if you don't import createTestServer from ai/test? For createTestServer you can install the @ai-sdk/test-server package as dev dependency now
@gr2m @dancer thanks for looking into this. It looks like also vitest is required. Installing the @ai-sdk/test-server resolves the msw error.:
Error: Turbopack build failed with 1 errors:
./node_modules/.pnpm/@[email protected][email protected]/node_modules/@ai-sdk/provider-utils/dist/test/index.mjs:72:1
Module not found: Can't resolve 'vitest'
70 | import { http, HttpResponse } from "msw";
71 | import { setupServer } from "msw/node";
> 72 | import { beforeAll, beforeEach, afterAll } from "vitest";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
73 | var TestServerCall = class {
74 | constructor(request) {
75 | this.request = request;```
It looks like also
vitestis required
Only if you import from @ai-sdk/test-server/with-vitest
This works for me without an error
# create and cd into temporary directory
cd $(mktemp -d)
# install the package
npm install @ai-sdk/test-server
# run import
node -e 'import "@ai-sdk/test-server"'
This throws the error
node -e 'import "@ai-sdk/test-server/with-vitest"'