Skip to content

Vitest Error: No such module "pg-cloudflare" when using @cloudflare/vitest-pool-workers #8840

@tmm

Description

@tmm

Which Cloudflare product(s) does this pertain to?

Workers Vitest Integration

What versions & operating system are you using?

@cloudflare/vitest-pool-workers@0.8.12, wrangler@4.8.0, node@22.5.1, macOS 14.5

Please provide a link to a minimal reproduction

https://github.com/tmm/pg-cloudflare-issue

Describe the Bug

Using pg in simple test:

import { Pool } from "pg";
import { test } from "vitest";

test("default", async () => {
  const pool = new Pool({
    connectionString: "postgresql://postgres:postgres@localhost",
  });
  const result = await pool.query("SELECT $1::text as name", ["cloudflare"]);
  console.log(result.rows[0].name);
});

Test passes with the following config vitest.pass.config.mts:

export default {
  test: {
    poolOptions: {
      workers: {
	wrangler: { configPath: "./wrangler.jsonc" },
      },
    },
  },
};

Test fails with the following config vitest.fail.config.mts:

import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config";

export default defineWorkersConfig({
  test: {
    poolOptions: {
      workers: {
        wrangler: { configPath: "./wrangler.jsonc" },
      },
    },
  },
});

Possible upstream fix: brianc/node-postgres#3407

Please provide any relevant error logs

❯ pnpm test:pass

> @ test:pass /Users/user/Desktop/worker
> vitest -c vitest.pass.config.mts


 DEV  v3.0.9 /Users/user/Desktop/worker

stdout | test/index.spec.ts > default
cloudflare

 ✓ test/index.spec.ts (1 test) 16ms
   ✓ default

 Test Files  1 passed (1)
      Tests  1 passed (1)
   Start at  23:21:49
   Duration  184ms (transform 16ms, setup 0ms, collect 23ms, tests 16ms, environment 0ms, prepare 32ms)

 PASS  Waiting for file changes...
       press h to show help, press q to quit
❯ pnpm test:fail

> @ test:fail /Users/user/Desktop/worker
> vitest -c vitest.fail.config.mts


 DEV  v3.0.9 /Users/user/Desktop/worker

[vpw:inf] Starting isolated runtimes for vitest.fail.config.mts...
[mf:wrn] The latest compatibility date supported by the installed Cloudflare Workers Runtime is "2025-04-05",
but you've requested "2025-04-07". Falling back to "2025-04-05"...
workerd/server/server.c++:3250: error: Fallback service failed to fetch module; exception = (unknown):-1: failed: std::exception: Uncaught JsExceptionThrown
stack: 1053983a7 1048b010f 104887c3b 1053a0c53 104b26913 104b26bef 1053966db 104b187a3 1055faf17 1055f93eb 1055f93eb 1055f9c4b 1057868f3 1055f93eb 1055f9c4b; spec = /?specifier=%2FUsers%2Fuser%2FDesktop%2Fworker%2Fnode_modules%2F.pnpm%2Fpg-cloudflare%401.1.1%2Fnode_modules%2Fpg-cloudflare%2Fdist%2Findex.js%3Fmf_vitest_no_cjs_esm_shim&referrer=%2FUsers%2Fuser%2FDesktop%2Fworker%2Fnode_modules%2F.pnpm%2Fpg%408.14.1%2Fnode_modules%2Fpg%2Flib%2Fstream.js%3Fmf_vitest_no_cjs_esm_shim&rawSpecifier=pg-cloudflare
 ❯ test/index.spec.ts (1 test | 1 failed) 8ms
   × default 4ms
     → No such module "Users/user/Desktop/worker/node_modules/.pnpm/pg@8.14.1/node_modules/pg/lib/pg-cloudflare".

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

 FAIL  test/index.spec.ts > default
Error: No such module "Users/user/Desktop/worker/node_modules/.pnpm/pg@8.14.1/node_modules/pg/lib/pg-cloudflare".
 ❯ getStream Users/user/Desktop/worker/node_modules/.pnpm/pg@8.14.1/node_modules/pg/lib/stream.js?mf_vitest_no_cjs_esm_shim:41:34
 ❯ new Connection Users/user/Desktop/worker/node_modules/.pnpm/pg@8.14.1/node_modules/pg/lib/connection.js?mf_vitest_no_cjs_esm_shim:18:36
 ❯ new Client Users/user/Desktop/worker/node_modules/.pnpm/pg@8.14.1/node_modules/pg/lib/client.js?mf_vitest_no_cjs_esm_shim:49:7
 ❯ BoundPool.newClient Users/user/Desktop/worker/node_modules/.pnpm/pg-pool@3.8.0_pg@8.14.1/node_modules/pg-pool/index.js?mf_vitest_no_cjs_esm_shim:222:20
 ❯ BoundPool.connect Users/user/Desktop/worker/node_modules/.pnpm/pg-pool@3.8.0_pg@8.14.1/node_modules/pg-pool/index.js?mf_vitest_no_cjs_esm_shim:216:10
 ❯ BoundPool.query Users/user/Desktop/worker/node_modules/.pnpm/pg-pool@3.8.0_pg@8.14.1/node_modules/pg-pool/index.js?mf_vitest_no_cjs_esm_shim:403:10
 ❯ test/index.spec.ts:8:28
      6|   connectionString: "postgresql://postgres:postgres@localhost",
      7|  });
      8|  const result = await pool.query("SELECT $1::text as name", ["cloudflare"]);
       |                            ^
      9|  console.log(result.rows[0].name);
     10| });

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯


 Test Files  1 failed (1)
      Tests  1 failed (1)
   Start at  23:22:42
   Duration  555ms (transform 12ms, setup 0ms, collect 51ms, tests 8ms, environment 0ms, prepare 113ms)

 FAIL  Tests failed. Watching for file changes...
       press h to show help, press q to quit

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No fields configured for Bug.

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions