我正在尝试在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',
});
});
然而,当我尝试运行编译后的代码时,出现以下错误:
未处理拒绝TypeError:无法调用 Class 构造函数 Model,必须使用'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应该解决问题,但即使进行了这样的更改,问题仍然存在。我已经不知道在这里做错了什么,因此非常需要帮助。