js developer.
I am making express and jade web app. Now I am trying to call class method in index.router.js from login.controller.js, I have been looking for a way to call the method without adding "type": "module" in package.json. This is because my teacher said I should avoid using it for now. I have been looking for a solution for this, but I haven't figured out how. Thanks for reading!
Here's my code:
//This is index.route.js
const express = require('express');
const app = express();
const IndexRouter = express.Router();
const LoginController = require('../controllers/login.controller')
IndexRouter.use('/', LoginController.login())
module.exports = IndexRouter
//This is login.controller.js
module.exports = class LoginController{
async login (req,res) {
res.send("Login Page")
}
}
Create Class Objects and use class objects to access class methods
In index.route.js
const express = require('express');
const app = express();
const IndexRouter = express.Router();
const LoginController = require('../controllers/login.controller')
const loginController = new LoginController();
IndexRouter.use('/', loginController.login())
module.exports = IndexRouter
In login.controller.js
class LoginController {
async login(req, res) {
res.send("Login Page")
}
}
module.exports = LoginController;
For Ex.
class LoginController {
login(req, res) {
console.log("LoginController Login");
}
}
const loginController = new LoginController();
loginController.login();
Or can directly access Login function without using class
In index.route.js
const express = require('express');
const app = express();
const IndexRouter = express.Router();
const { login } = require('../controllers/login.controller')
IndexRouter.use('/', login()); // or use('/', login) if using middleware
module.exports = IndexRouter
In login.controller.js
async function login(req, res) {
res.send("Login Page")
}
module.exports = {
login
};