Skip to content

[JS] ERR_UNSUPPORTED_DIR_IMPORT when importing @genkit-ai/google-genai in Firebase Functions (Node 22, ESM) #3477

@janisto

Description

@janisto

Describe the bug
Importing @genkit-ai/google-genai in a Firebase Functions project (Node 22, ESM) fails with the following error when deploying:

> npm run deploy

> functions@1.0.1 deploy
> firebase deploy --only functions


=== Deploying to 'undisclosed-name'...

i  deploying functions
Running command: npm --prefix functions run build

> functions@1.0.1 build
> tsc

✔  functions: Finished running predeploy script.
i  functions: preparing codebase default for deployment
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
i  artifactregistry: ensuring required API artifactregistry.googleapis.com is enabled...
i  functions: Loading and analyzing source code for codebase default to determine what to deploy
Serving at port 8642

Error [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import '.../functions/node_modules/@genkit-ai/google-genai/lib/googleai' is not supported resolving ES modules imported from .../functions/node_modules/@genkit-ai/google-genai/lib/index.mjs
    at finalizeResolution (node:internal/modules/esm/resolve:262:11)
    at moduleResolve (node:internal/modules/esm/resolve:864:10)
    at defaultResolve (node:internal/modules/esm/resolve:990:11)
    at #cachedDefaultResolve (node:internal/modules/esm/loader:735:20)
    at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:771:38)
    at ModuleLoader.resolveSync (node:internal/modules/esm/loader:794:52)
    at #cachedResolveSync (node:internal/modules/esm/loader:754:25)
    at ModuleLoader.getModuleJobForRequire (node:internal/modules/esm/loader:466:50)
    at #link (node:internal/modules/esm/module_job:441:34)
    at new ModuleJobSync (node:internal/modules/esm/module_job:414:17) {
  code: 'ERR_UNSUPPORTED_DIR_IMPORT',
  url: 'file:///.../functions/node_modules/@genkit-ai/google-genai/lib/googleai'
}

Error: Functions codebase could not be analyzed successfully. It may have a syntax or runtime error

package.json:

  "type": "module",
  "engines": {
    "node": "22"
  },
  ...

tsconfig.json:

  "compilerOptions": {
    "target": "ES2022",
    "module": "nodenext",
    "moduleResolution": "nodenext",
    ...

To Reproduce
The error occurs when using:

import { vertexAI } from "@genkit-ai/google-genai";

As a workaround, I had to switch to createRequire:

import { createRequire } from "node:module";
const require = createRequire(import.meta.url);
const { vertexAI } = require("@genkit-ai/google-genai");

To Reproduce
1. Create a Firebase Functions project with:
• package.json: "type": "module", "engines": { "node": "22" }
• tsconfig.json: "module": "nodenext", "moduleResolution": "nodenext"
2. Install @genkit-ai/google-genai.
3. Import with:
import { vertexAI } from "@genkit-ai/google-genai";
4. Run firebase deploy --only functions.
5. Observe the ERR_UNSUPPORTED_DIR_IMPORT error.

Expected behavior
The ESM import should work out of the box without requiring createRequire.

Screenshots
N/A

Runtime (please complete the following information):
• OS: MacOS 15.6.1
• Firebase Functions (2nd gen)
• Node.js: v22.18.0

Additional context
This seems related to how the package exposes /lib/googleai through its entry points. Node’s ESM resolver does not allow directory imports. Adding proper "exports" mappings in the package package.json could fix this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingjs

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions