gpt4 book ai didi

node.js - 使用 TypeScript 在 Node.js 中进行 Sequelize - 没有 'new' 就无法调用类构造函数模型

转载 作者:行者123 更新时间:2023-12-03 12:18:44 32 4
gpt4 key购买 nike

我正在尝试在 Node.js + TypeScript 中使用 Sequelize。我正在尝试使用以下简单代码:

import {Sequelize, Model, DataTypes} from 'sequelize';

const sequelize = new Sequelize('base', 'user', 'pass', {dialect: 'mysql'});

class User extends Model {
}
User.init({
id: {
type: DataTypes.INTEGER.UNSIGNED,
autoIncrement: true,
primaryKey: true,
unique: true,
},
login: {
type: DataTypes.STRING(255),
allowNull: false,
unique: true,
},
password: {
type: DataTypes.STRING(255),
allowNull: false,
},
}, {
tableName: 'users',
sequelize,
});

sequelize.sync().then(() => {
User.create({
login: 'aaaa',
password: 'bbbb',
});
});

但是,当尝试运行已编译的代码时,出现以下错误:

Unhandled rejection TypeError: Class constructor Model cannot be invoked without 'new'



据我了解,这不是 sequelize 的问题:与 javascript 代码运行相同的代码运行没有问题,并在数据库正确的表中创建记录。我知道这是将 ES6 类转换为 ES5 的问题,但是我无法修复此错误。这是我的 tsconfig.json:
{
"compilerOptions": {
"experimentalDecorators": true,
"outDir": "./dist",
"noImplicitAny": true,
"noImplicitReturns": true,
"module": "esnext",
"target": "es5",
"sourceMap": true,
"moduleResolution": "node",
"lib": ["es5", "dom", "esnext"],
"jsx": "react",
"typeRoots": ["./common/typings", "./node_modules/@types"]
},
"exclude": [
"node_modules"
]
}

从我在 Stackoverflow 类似问题和互联网上的各种站点中读到的内容来看,将编译器选项中的目标更改为 ES6 应该可以解决问题,但即使在这样的更改之后问题仍然存在。我在这里做错了什么,我已经没有想法了,因此将不胜感激。

最佳答案

尝试在 tsconfig.json 中将目标更改为 "ES2017"。为我解决了问题。

关于node.js - 使用 TypeScript 在 Node.js 中进行 Sequelize - 没有 'new' 就无法调用类构造函数模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887617/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com