Skip to content

fix: add typesVersions so testing module resolves under classic TypeScript moduleResolution#764

Open
64johnlee wants to merge 1 commit into
GoogleCloudPlatform:mainfrom
64johnlee:fix/testing-module-typesversions
Open

fix: add typesVersions so testing module resolves under classic TypeScript moduleResolution#764
64johnlee wants to merge 1 commit into
GoogleCloudPlatform:mainfrom
64johnlee:fix/testing-module-typesversions

Conversation

@64johnlee
Copy link
Copy Markdown

Problem

The ./testing subpath export is declared in exports correctly, but TypeScript's default moduleResolution: "node" does not read the exports field in package.json. This means projects using the default (or older) TypeScript configuration get a type error when importing the testing utilities:

import { getTestServer } from '@google-cloud/functions-framework/testing';
// Error: Module '@google-cloud/functions-framework/testing' not found

Both getTestServer and getFunction are affected.

Root Cause

TypeScript only respects exports subpath maps when moduleResolution is set to "node16", "nodenext", or "bundler". Most projects still use "node" (the classic resolver), which only looks at main and types at the package root.

Fix

Add a typesVersions field, which is the standard way to declare subpath type mappings for all TypeScript versions and moduleResolution modes:

"typesVersions": {
  "*": {
    "testing": ["./build/src/testing.d.ts"]
  }
}

This is additive — projects already using node16/bundler continue using the exports map; projects using classic node resolution now also work.

Verification

After this change, the following import works without moduleResolution: "node16":

import { getTestServer, getFunction } from '@google-cloud/functions-framework/testing';

Fixes #594

🤖 Generated with Claude Code

…cript moduleResolution

The exports map in package.json correctly declares the ./testing subpath,
but TypeScript's moduleResolution: "node" (the default in most projects) does
not read the exports field. This caused `getTestServer` and `getFunction` to
appear not found when users imported @google-cloud/functions-framework/testing.

Adding typesVersions instructs TypeScript to resolve the testing subpath to
./build/src/testing.d.ts regardless of moduleResolution setting, unblocking
users on TypeScript <4.7 or projects that have not yet adopted node16/bundler
module resolution.

Fixes GoogleCloudPlatform#594

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@google-cla
Copy link
Copy Markdown

google-cla Bot commented Jun 6, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

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

Successfully merging this pull request may close these issues.

Supertest: getTestServer Not Found

1 participant