-
Notifications
You must be signed in to change notification settings - Fork 532
Description
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
Labels
Type
Projects
Status