Cannot access variable before initialization error when variable is initialized in another file
06:58 09 Oct 2023

I have something like this:

photo.ts

import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from "typeorm"
import { User } from "./User"

@Entity()
export class Photo {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    url: string

    @ManyToOne(() => User, (user) => user.photos)
    user: User
}

user.ts

import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm"
import { Photo } from "./Photo"

@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    name: string

    @OneToMany(() => Photo, (photo) => photo.user)
    photos: Photo[]
}

Am running using nodemon and i have ts-node installed, but am getting the following error:

ReferenceError: Cannot access 'User' before initialization
    at file:///path/to/project/src/database/entities/photo.ts:14:9
    at ModuleJob.run (node:internal/modules/esm/module_job:194:25)

This error beats me as I don't even know where to start because, frankly, I have never encountered the error before, any help would be greatly appreciated.

Versions:

node: v18.17.1
ts-node: v10.9.1
nodemon: v3.0.1
typescript: v5.2.2
node.js typescript typeorm nodemon ts-node