My Next.js application is going to run in Google Cloud Run with a connection to Google Cloud SQL PostgreSQL.
I have created two different environment variable files, and a connect-connector.ts file.
.env.local
DB_HOST=localhost
DB_USER=postgres
DB_PASS=supersecretpassword
DB_NAME=my_mood
DB_PORT=5432
.env.production
INSTANCE_CONNECTION_NAME=my-project:europe-north1:my-db
DB_USER=postgres
DB_PASS=supersecretpassword
DB_NAME=my_mood
connect-connector.ts
import { Pool } from 'pg';
import { Connector, execute } from '@google-cloud/cloud-sql-connector';
export const createConnectorPool = async () => {
if (process.env.NODE_ENV === 'production') {
const connector = new Connector();
const client = await connector.getClient({
instanceConnectionName: process.env.INSTANCE_CONNECTION_NAME,
dbUser: process.env.DB_USER,
dbPassword: process.env.DB_PASS,
dbName: process.env.DB_NAME,
});
return new Pool({
host: client.socketPath,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
max: 5, // maintain up to 5 connections in the pool
});
} else {
return new Pool({
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
max: 5, // maintain up to 5 connections in the pool
});
}
};
This gives me the following error on await connector.getClient
:
Property ‘getClient’ does not exist on type ‘Connector’
How can I fix this issue?
I have installed the following:
npm install @google-cloud/cloud-sql-connector pg
npm install @types/pg