问题
当添加模型时,会发生错误Cannot read properties of undefined (reading 'prototype')。
版本
以下是package.json的内容
{
"dependencies": {
"nuxt": "^2.15.8",
"pg": "^8.7.3",
"pg-hstore": "^2.3.4",
"reflect-metadata": "^0.1.13",
"sequelize": "^6.19.0",
"sequelize-typescript": "^2.1.3",
"vue": "^2.6.14",
"webpack": "^4.46.0"
},
"devDependencies": {
"@nuxt/types": "^2.15.8",
"@nuxt/typescript-build": "^2.1.0",
"@types/node": "^17.0.24",
"@types/validator": "^13.7.2",
"sequelize-cli": "^6.4.1"
}
}实际行为
当执行sequelize.addModels()时会发生错误。
我在相关代码之后附加了错误消息。
预期行为
错误不会发生,可以添加模型。
复制步骤
像代码一样创建companyMaster.ts。
在companyMaster.ts中导入index.ts。
执行index.ts。
关于如何添加模型,我参考了链接。
相关代码
共用/续订/模型/公司硕士
import { Table, Column, Model } from 'sequelize-typescript';
@Table({
schema: 'public',
tableName: 'company_master',
underscored: true,
timestamps: true,
})
export class CompanyMaster extends Model {
@Column
companyNumber!: string;
@Column
companyName!: string;
@Column
homepageUrl!: string;
}index.ts
import { Sequelize } from 'sequelize-typescript';
import { CompanyMaster } from './commons/sequelize/models/companyMaster';
const sequelize = new Sequelize(process.env.DB_CONNECTION_URI || '', {
models: [__dirname + '/commons/sequelize/models'], // (edited) here also the error happens.
});
sequelize.addModels([CompanyMaster]); // the error happens here行sequelize.addModels([CompanyMaster]);的错误消息
Cannot read properties of undefined (reading 'prototype')
at node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:62:71
at Array.map (<anonymous>)
at Sequelize.defineModels (node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:61:23)
at Sequelize.addModels (node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:37:36)
at server/index.ts:30:15
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)(编辑)行models: [__dirname + '/commons/sequelize/models'],的错误消息
Cannot find module 'commons/sequelize/models/companyMaster'
Require stack:
- node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize-service.js
- node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js
- node_modules/sequelize-typescript/dist/index.js
- server/index.ts
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._resolveFilename (node_modules/module-alias/index.js:49:29)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize-service.js:45:32
at Array.map (<anonymous>)
at node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize-service.js:43:18
at Array.reduce (<anonymous>)
at getModels (node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize-service.js:35:20)
at Sequelize.addModels (node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:36:58)
at new Sequelize (node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:20:22)
at server/index.ts:24:23
at Layer.handle [as handle_request] (node_modules/express/lib/router/layer.js:95:5)
at next (node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (node_modules/express/lib/router/route.js:112:3)发布于 2022-04-21 15:36:18
如果要使用“模型”选项,则必须将实例(CompanyMaster)类导出为默认值。
这一行:
models: [__dirname + '/commons/sequelize/models']必须:
models: [__dirname + "/commons/sequelize/models/*.ts"]而且,您不需要".addModels()“
https://stackoverflow.com/questions/71881173
复制相似问题