70bf21e064
Deploy (to testing) and Test Playground Preview Worker / Deploy Playground Preview Worker (testing) (push) Has been skipped
Deploy Workers Shared Staging / Deploy Workers Shared Staging (push) Failing after 0s
Prerelease / build (push) Has been skipped
Handle Changesets / Handle Changesets (push) Has been cancelled
Semgrep OSS scan / semgrep-oss (push) Has been cancelled
37 lines
1.3 KiB
Markdown
37 lines
1.3 KiB
Markdown
# ⚡ module-resolution
|
|
|
|
This fixture demonstrates that the Vitest integration correctly resolves modules, including:
|
|
|
|
- A CommonJS package that requires a directory rather than a specific file.
|
|
- An ESM dependency that imports `*.wasm?module` from the same directory.
|
|
- A package without a main entrypoint or with browser field mapping, handled via [Dependency Pre-Bundling](#dependency-pre-bundling).
|
|
|
|
## Dependency Pre-Bundling
|
|
|
|
[Dependency Pre-Bundling](https://vite.dev/guide/dep-pre-bundling) is a Vite feature that converts dependencies shipped as CommonJS or UMD into ESM. If you encounter module resolution issues—such as: `Error: Cannot use require() to import an ES Module` or `Error: No such module`—you can pre-bundle these dependencies using the [deps.optimizer](https://vitest.dev/config/#deps-optimizer) option:
|
|
|
|
```ts
|
|
import { cloudflareTest } from "@cloudflare/vitest-pool-workers";
|
|
import { defineConfig } from "vitest/config";
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
cloudflareTest({
|
|
wrangler: { configPath: "./wrangler.jsonc" },
|
|
}),
|
|
],
|
|
test: {
|
|
deps: {
|
|
optimizer: {
|
|
ssr: {
|
|
enabled: true,
|
|
include: ["your-package-name"],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
```
|
|
|
|
See our [vitest config](./vitest.config.ts) for an example of how we pre-bundled `discord-api-types/v10` and `@microlabs/otel-cf-workers`.
|