網站搜尋

typescript - TypeOrm 創建了資料庫但無法連接


我正在嘗試建立 JWT 認證系統,為此我決定使用 NestJs 和 SQLite。程式碼會生成 SQLite 檔案,但之後會拋出「無法連接到資料庫」的錯誤。我通過 SQLite 終端檢查後發現,表格也沒有被添加。

這裡的實體

import {
    BeforeInsert,
    Column,
    CreateDateColumn,
    Entity,
    PrimaryGeneratedColumn
} from 'typeorm';
import * as bcrypt from 'bcrypt';
import * as jwt from 'jsonwebtoken';
import {UserRO} from './user.dto';

@Entity('user')
export class UserEntity {
    @PrimaryGeneratedColumn(`uuid`)
    id: string;
@CreateDateColumn()
created: Date;

@Column({
    type: 'text',
    unique: true
})
username: string;

@Column('text')
password: string;

@BeforeInsert()
async hashPassword() {
    this.password = await  bcrypt.hash(this.password, 10);
}

以及來自 app.module 的 sqlite 資料庫描述

@Module({
    imports: [TypeOrmModule.forRoot({
        type: 'sqlite',
        database: 'taskDB',
        synchronize: true,
        logging: false,
        entities: [__dirname + '/../**/*.entity{.ts,.js}'],
    }), UserModule],
    controllers: [AppController],
    providers: [AppService],
})

而這就是終端機發送的

(function (exports, require, module, __filename, __dirname) { import {BeforeInsert, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn} from 'typeorm';
    [0]                                                                      ^
    [0]
    [0] SyntaxError: Unexpected token {
    [0]     at new Script (vm.js:85:7)
    [0]     at createScript (vm.js:266:10)
    [0]     at Object.runInThisContext (vm.js:314:10)
    [0]     at Module._compile (internal/modules/cjs/loader.js:698:28)
    [0]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:749:10)
    [0]     at Module.load (internal/modules/cjs/loader.js:630:32)
    [0]     at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
    [0]     at Function.Module._load (internal/modules/cjs/loader.js:562:3)
    [0]     at Module.require (internal/modules/cjs/loader.js:667:17)
    [0]     at require (internal/modules/cjs/helpers.js:20:18)

答案#1

使用這個:

entities: ['dist/**/*.entity{.ts,.js}'],

或者這個:

entities: [__dirname + '/**/*.entity{.ts,.js}'],