sequelize和Esmodules的循环导入错误



我正在做一个只使用EsModules的tinyHttp V2项目。

我试图用一些序列化模型做一个样本项目,但我无法启动任何东西,typescript编译抱怨循环导入模型(这与commonJs很好),

下面是我得到的错误:

yarn run v1.22.17 $ node——experimental- specific -resolution=node——experimental-modules——loader ts-node/esm ./sequelize/seed/seed (node:10691) ExperimentalWarning:——experimental-loader是一个实验功能。此功能可以随时更改(使用node --trace-warnings ...显示创建警告的位置)参考错误:在初始化之前无法访问'Project'文件:///…/测试/sequelize/模型/任务。ts:32:14 at ModuleJob.run(内部/modules/esm/module_job.js:170:25(内部/modules/esm/loader.js:178:24(internal/process/esm_loader.js:68:5) error Command failed with exit代码1。

这是我的TsConfig

{
"ts-node": {
"esm": true
},
"compilerOptions": {
"target": "ES2022",
"lib": ["ESNext"],
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
/* Modules */
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
/* JavaScript Support */
"allowJs": true,
/* Emit */
"declaration": true,
"outDir": "dist",
"downlevelIteration": true,
"preserveConstEnums": true,
"isolatedModules": false,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"preserveSymlinks": true,
"forceConsistentCasingInFileNames": true,
/* Type Checking */
"noImplicitAny": false,
"strictPropertyInitialization": false,
"noUnusedParameters": false,
/* Completeness */
"skipDefaultLibCheck": true,
"skipLibCheck": true
},
"include": ["*.ts", "**/*.ts"],
"exclude": ["packages/*/dist", "node_modules"]
}

我试图改变模块的分辨率,但没有运气,我卡住了,任何想法?

我成功地得到了这个工作,解决方案是在typeOrm代码中找到的,我必须定义这个类型

export type CircularHelper<T> = T

,然后在models

@Table({
tableName: 'user',
underscored: true,
paranoid: true,
timestamps: true
})
export class User extends Model{
@Column
firstname: string
@Column
lastname: string
@Column
password: string
@Column
email: string
@HasMany(()=> UserProject)
projects: CircularHelper<UserProject>[]
@HasMany(()=> Task)
tasks: CircularHelper<Task>[]
}
@Table({
tableName: 'task',
paranoid: false,
timestamps: true,
underscored: true
})
export class Task extends Model{
@Column
title: string
@Column(DataType.TEXT)
body: string
@Column
completion: number
@ForeignKey(()=> User)
@Column
userId: number
@BelongsTo(()=> User)
user: CircularHelper<User>
@ForeignKey(()=>Project)
@Column
projectId: number
@BelongsTo(()=>Project)
project: CircularHelper<Project>
}

我希望它能帮助到别人

相关内容

最新更新