Sequelize i Node.js med TypeScript - Klassens konstruktør Model kan ikke kalles uten 'new'
Jeg prøver å bruke Sequelize i Node.js + TypeScript. Jeg prøver å bruke følgende enkle kode:
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',
});
});
Men når jeg prøver å kjøre kompilert kode, får jeg følgende feil:
Ubehandlet avvisning TypeError: Klassekonstruktør Model kan ikke kalles uten 'new'
Så vidt jeg forstår, er dette ikke et problem med sequelize: samme kode kjørt som JavaScript-kode fungerer uten problem og oppretter poster i riktige tabeller i databasen. Jeg vet at dette er et problem med å transpile ES6-klasser til ES5, men jeg får ikke fikset denne feilen. Dette er min 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"
]
}
Fra det jeg har lest i lignende spørsmål på Stackoverflow og forskjellige nettsteder på internett, bør det å endre mål i kompilatorinnstillingene til ES6 løse problemet, men selv etter en slik endring oppstår problemet fortsatt. Jeg begynner å gå tom for ideer om hva jeg har gjort galt her, så hjelp vil bli svært verdsatt.
Svar #1
Gå til tsconfig.json-filen. Deretter endrer du target til es6 som i eksemplet nedenfor:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"declaration": true,
"outDir": "./lib",
"strict": true
},
"include": ["src"],
"exclude": ["node_modules", "**/__tests__/*"]
}
Svar #2
prøv å endre target til "ES2017" i tsconfig.json. løste problemet for meg.
