首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:无法读取未定义属性(读取“原型”)

错误:无法读取未定义属性(读取“原型”)
EN

Stack Overflow用户
提问于 2022-04-15 07:20:03
回答 1查看 475关注 0票数 0

问题

当添加模型时,会发生错误Cannot read properties of undefined (reading 'prototype')

版本

  • 续订:6.19.0
  • 续写-打字本:2.1.3
  • 打字本:

以下是package.json的内容

代码语言:javascript
复制
{
  "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

关于如何添加模型,我参考了链接

相关代码

共用/续订/模型/公司硕士

代码语言:javascript
复制
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

代码语言:javascript
复制
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]);的错误消息

代码语言:javascript
复制
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'],的错误消息

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-04-21 15:36:18

如果要使用“模型”选项,则必须将实例(CompanyMaster)类导出为默认值。

这一行:

代码语言:javascript
复制
models: [__dirname + '/commons/sequelize/models']

必须:

代码语言:javascript
复制
models: [__dirname + "/commons/sequelize/models/*.ts"]

而且,您不需要".addModels()“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71881173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档