I'm new to express.
I want to import files to sequelize and declared:
const model = sequelize.import(path.join(__dirname, file))
^
It returned the following type error
TypeError: sequelize.import is not a function
And then, edited code to
var model = require(path.join(__dirname, file))(sequelize, Sequelize);
^
Then the error is:
TypeError: require(...) is not a function
I think it is the error in importing stuff....
Here is my whole file code:
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const config = require('../config/config');
const db = {}
var __dirname = path.resolve();
const sequelize = new Sequelize(
config.db.database,
config.db.user,
config.db.password,
config.db.options
)
fs
.readdirSync(__dirname)
.filter((file) =>
file !== 'index.js'
)
.forEach((file) => {
//const model = sequelize.import(path.join(__dirname, file))
var model = require(path.join(__dirname, file))(sequelize,
Sequelize);
db[model.name] = model
})
db.sequelize = sequelize
db.Sequelize = Sequelize
module.exports = db
The error is caused by using the sequelize import object. Instead you should use Node's built in CommonJS require
function. So change this line in your models/index.js
:
const model = sequelize['import'](path.join(__dirname, file))
to:
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes)
You can also just regenerate the models
directory and readd your models without the old index.js
if you find that easier:
mv models models.bak && sequelize init:models && mv models.bak/index.js models.bak/index.js.bak && mv models.bak/* models/ && rm models.bak
That one liner will fix your problem if you have sequelize-cli installed globally. If you don't you can use this one:
npm i --save-dev sequelize-cli && mv models models.bak && npx sequelize init:models && mv models.bak/index.js models.bak/index.js.bak && mv models.bak/* models/ && rm models.bak
You may also need to update your config folder. I use a JavaScript config to inject ENVs, so I had to add to change my const config = require(...
line to reflect that. If you used one of my one liners your old models/index.js
file is now at index.js.bak if you need to grab any custom stuff from it.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments