Typescript og typeorm konfigurasjon .ts ingen overbelastning passer til dette kallet


Hei, jeg har et problem i min app.ts når jeg laster inn innstillingene mine fra ormconfig.ts for typeorm-funksjonen for å opprette tilkoblingen, fikk jeg denne feilen i appen min:

No overload matches this call.
  Overload 1 of 3, '(name: string): Promise<Connection>', gave the following error.
    Argument of type 'typeof import("d:/EmasaTi_StockControl/src/shared/infra/http/ormconfig")' is not assignable to parameter of type 'string'.
  Overload 2 of 3, '(options: ConnectionOptions): Promise<Connection>', gave the following error.
    Argument of type 'typeof import("d:/EmasaTi_StockControl/src/shared/infra/http/ormconfig")' is not assignable to parameter of type 'ConnectionOptions'.
      Type 'typeof import("d:/EmasaTi_StockControl/src/shared/infra/http/ormconfig")' is missing the following properties from type 'ExpoConnectionOptions': type, database, driverts(2769)
Peek Problem (Alt+F8)
No quick fixes available

kode :

import 'dotenv/config';
import { createConnection } from 'typeorm';
import App from './app';
import validateEnv from '@utils/validateEnv';
import * as config from './ormconfig';
validateEnv();

(async () => {
  try {
    const connection = await createConnection(config);
    await connection.runMigrations();
  } catch (error) {
    console.log('Error while connecting to the database', error);
    return error;
  }
  const app = new App(
  );
  app.listen();
})();

min konfigurasjonsfil:

import { ConnectionOptions } from 'typeorm';

const rootDir = process.env.NODE_ENV === 'development' ? 'src' : 'build/src';
export const config: ConnectionOptions = {
  type: 'postgres',
  host: process.env.DB_HOST,
  port: Number(process.env.DB_PORT),
  username: process.env.DB_USER,
  password: process.env.DB_PASS,
  database: process.env.DB_NAME,
  entities: [rootDir + '/entities/**/*.{js,ts}'],
  migrations: [rootDir + '/migrations/*.{js,ts}'],
  subscribers: [rootDir + '/subscribers/**/*.{js,ts}'],
  cli: {
    entitiesDir: `${rootDir}/entities`,
    migrationsDir: `${rootDir}/migration`,
    subscribersDir: `${rootDir}/subscriber`,
  },
  synchronize: false,
  logging: true
};

module.exports = config;

Jeg kan ikke forestille meg hvordan jeg kunne løse dette problemet hvis noen kan hjelpe meg, er jeg takknemlig

Svar #1

Jeg er ikke sikker på hva den perfekte løsningen er, men jeg har funnet en måte å omgå det på.

  1. Fjern "type": "mysql" fra din tsconfig.json eller annen konfigurasjonsfil etter hva som måtte være tilfelle.
  2. Importer konfigurasjonen din som vanlig. Eksempel: import config from './ormconfig.json'.
  3. Bruk config-variabelen slik: createConnection({type: "postgres", ...config}).

Jeg tror at av en eller annen grunn blir ikke type-nøkkelen analysert på riktig måte.

Skål.

Relaterte artikler