Relation 的 TypeORM 导入失败

问题描述 投票:0回答:1

我在一个带有 esm 的 Nodejs 项目中使用 typeorm。我需要使用关系包装器来避免循环依赖。

当我尝试使用关系包装器时出现此错误:

import { Column, Entity, OneToOne, PrimaryGeneratedColumn, Relation } from 'typeorm';
                                                           ^^^^^^^^
SyntaxError: The requested module 'typeorm' does not provide an export named 'Relation'

代码文件:

import { Column, Entity, OneToOne, PrimaryGeneratedColumn, Relation } from 'typeorm';
import { Vehicle } from './vehicle';

@Entity({ name: 'vehicle_default_values' })
export class VehicleDefaultValues {
    @PrimaryGeneratedColumn({ unsigned: true })
    id: number;

    @Column({ type: 'int', unsigned: true, unique: true })
    model: number;

    @Column({ type: 'float', default: 550 })
    maxFuel: number;

    @Column({ type: 'boolean', default: false })
    isElectric: boolean;

    @Column({ type: 'float', default: 0.008 })
    fuelConsumption: number;

    @Column({ type: 'mediumint', unsigned: true, default: 200 })
    maxSpeed: number;

    @Column({ type: 'mediumint', unsigned: true, default: 50 })
    trunkVolume: number;

    @Column({ type: 'text', nullable: true })
    vehicleExtras: string;

    @OneToOne(() => Vehicle, (vehicle) => vehicle.vehicleDefaultValues)
    vehicle: Relation<Vehicle>;
}

使用的typeorm版本:0.3.7

node.js typescript typeorm es6-modules
1个回答
0
投票

发生这种情况可能是因为将文件转换为 JavaScript 时未包含类型。导入

Column
Entity
OneToOne
PrimaryGeneratedColumn
都是函数,而导入
Relation
是类型。

使用 typescript 3.8 或更高版本,您可以明确地告诉您正在导入这样的类型:

import { Column, Entity, OneToOne, PrimaryGeneratedColumn } from 'typeorm';
import type { Relation } from 'typeorm';

或者使用 typescript 4.5 或更新版本,你可以这样做:

import { Column, Entity, OneToOne, PrimaryGeneratedColumn, type Relation } from 'typeorm';
© www.soinside.com 2019 - 2024. All rights reserved.