ai icon indicating copy to clipboard operation
ai copied to clipboard

MockLanguageModelV2 break down when using provider-utils v3.0.10

Open fwang2002 opened this issue 2 months ago • 7 comments

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

fwang2002 avatar Sep 29 '25 02:09 fwang2002

running into the same error, but only on nextjs 16 for some reason

xn1cklas avatar Oct 31 '25 11:10 xn1cklas

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)

benjick avatar Nov 01 '25 09:11 benjick

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.

gr2m avatar Nov 03 '25 16:11 gr2m

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

lgrammel avatar Nov 03 '25 17:11 lgrammel

@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 avatar Nov 03 '25 22:11 gr2m

@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;```

xn1cklas avatar Nov 04 '25 13:11 xn1cklas

It looks like also vitest is 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"'

gr2m avatar Nov 13 '25 16:11 gr2m