typescript - NestJs connexion à MySql : Erreur Impossible de se connecter à la base de données


Bonjour, j'ai un problème pour connecter NestJS à MySQL. Chaque fois que je change le mode de connexion, une erreur différente apparaît. Ceci est une lorsque c'est dans conf.ts

Si essayez avec ocrmconfig.json

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "root",
  "database": "famby_app",
  "entities": ["dist/**/*.entity{.ts,.js}"],
  "synchronize": true,
  "logging": true
}



    [Nest] 27419   - 04/08/2020, 6:02:56 PM   [TypeOrmModule] Unable to connect to the database. Retrying (9)... +4032ms
/Applications/MAMP/htdocs/baby-app-nest/src/user/user.entity.ts:2
import { Entity, Unique, BaseEntity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from "typeorm";
       ^

SyntaxError: Unexpected token {
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
[Nest] 27419   - 04/08/2020, 6:02:56 PM   [ExceptionHandler] Unexpected token { +1ms
/Applications/MAMP/htdocs/baby-app-nest/src/user/user.entity.ts:2
import { Entity, Unique, BaseEntity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from "typeorm";
       ^

SyntaxError: Unexpected token {
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)

Mon config.ts

    import { TypeOrmModuleOptions } from '@nestjs/typeorm';
import * as dotenv from 'dotenv';
import { UserEntity } from './user/user.entity';
import { join } from 'path';
import { ConnectionOptions } from 'typeorm';

export const typeOrmConfig: TypeOrmModuleOptions = {
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'root',
  password: 'root',
  database: 'database_test',
  entities: [__dirname + '/../**/*.entity.{js,ts}'],
  synchronize: true,
  logging: true
};

J'essaie toutes les manières possibles que je pouvais trouver :/

Quelqu'un peut-il m'aider si vous avez le même problème que moi ? Merci !!!

Réponse #1

Vous essayez de charger un fichier ts dans Node, ce qui n'est pas possible. Avec la ligne __dirname + '../**/*.entity.{js,ts}, vous reviendriez de votre répertoire dist à la racine, puis vous chargeriez tout ce qui est en .entity.ts et .entity.js. Donc vos fichiers sources TypeScript sont chargés et Node ne peut pas les analyser correctement. Vous devriez soit retirer le ts de ce glob, soit mieux filtrer pour ne regarder que dans votre répertoire dist (ou honnêtement, les deux seraient l'idéal).