I'm using typescript to run a sequelize database, and any time I run npm run build, I keep getting this error. I don't know what to do because I have checked online and the solutions don't work for me. All I'm trying to do is to connect to the database using sequelize database.
TypeError: require(...) is not a function
at C:\Users\Boss\Desktop\Microservice Api\models\index.ts:24:54
at Array.forEach (<anonymous>)
at Object.<anonymous> (C:\Users\Boss\Desktop\Microservice Api\models\index.ts:23:4)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Module._compile (C:\Users\Boss\Desktop\Microservice Api\node_modules\source-map-support\source-map-support.js:568:25)
at Module.m._compile (C:\Users\Boss\AppData\Local\Temp\ts-node-dev-hook-515725030064434.js:69:33)
at Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at require.extensions..jsx.require.extensions..js (C:\Users\Boss\AppData\Local\Temp\ts-node-dev-hook-515725030064434.js:114:20)
at require.extensions.<computed> (C:\Users\Boss\AppData\Local\Temp\ts-node-dev-hook-515725030064434.js:71:20)
at Object.nodeDevHook [as .ts] (C:\Users\Boss\Desktop\Microservice Api\node_modules\ts-node-dev\lib\hook.js:63:13)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (C:\Users\Boss\Desktop\Microservice Api\server.ts:4:1)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Module._compile (C:\Users\Boss\Desktop\Microservice Api\node_modules\source-map-support\source-map-support.js:568:25)
at Module.m._compile (C:\Users\Boss\AppData\Local\Temp\ts-node-dev-hook-515725030064434.js:69:33)
at Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at require.extensions..jsx.require.extensions..js (C:\Users\Boss\AppData\Local\Temp\ts-node-dev-hook-515725030064434.js:114:20)
at require.extensions.<computed> (C:\Users\Boss\AppData\Local\Temp\ts-node-dev-hook-515725030064434.js:71:20)
at Object.nodeDevHook [as .ts] (C:\Users\Boss\Desktop\Microservice Api\node_modules\ts-node-dev\lib\hook.js:63:13)
[ERROR] 19:32:13 TypeError: require(...) is not a function
This is my index.ts file where i keep getting the error 'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.js')[env];
const db: any = {};
let sequelize: any;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
sequelize = new Sequelize(config.database, config.username, config.password, config);
}
fs
.readdirSync(__dirname)
.filter((file: string) => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.ts');
})
.forEach((file: any) => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes) ;
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.account = require('./account')(sequelize, Sequelize)
db.phone_number = require('./phone_number')(sequelize,Sequelize)
db.account.hasMany(db.phone_number, {
foreignKey:'account_id'
})
db.phone_number.belongsTo(db.account)
export default db;
The error is coming from my index.ts folder. i don't know why I'm getting this error.
.forEach((file: any) => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes) ;
db[model.name] = model;
});