App crashing when i start with npm run dev

npm run dev

[email protected] dev
nodemon BackEnd/index.js

[nodemon] 3.1.7
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): .
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting node BackEnd/index.js
C:UsersFatiihDesktopBulgPayBackEndnode_modulesexpresslibapplication.js:217
throw new TypeError(‘app.use() requires a middleware function’)
^

TypeError: app.use() requires a middleware function
at Function.use (C:UsersFatiihDesktopBulgPayBackEndnode_modulesexpresslibapplication.js:217:11)
at Object. (C:UsersFatiihDesktopBulgPayBackEndindex.js:27:5)
at Module._compile (node:internal/modules/cjs/loader:1469:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)
at Module.load (node:internal/modules/cjs/loader:1288:32)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

Node.js v20.18.0
[nodemon] app crashed – waiting for file changes before starting…

at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

Node.js v20.18.0
[nodemon] app crashed – waiting for file changes before starting…

at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

Node.js v20.18.0
[nodemon] app crashed – waiting for file changes before starting…

at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

Node.js v20.18.0
[nodemon] app crashed – waiting for file changes before starting…

at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Module._load (node:internal/modules/cjs/loader:1104:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

Node.js v20.18.0
[nodemon] app crashed – waiting for file changes before starting…

My index.js:

const express = require('express');
const session = require('express-session');
const passport = require('passport');
const sequelize = require('./config/database');
const User = require('./models/User');
const authRoutes = require('./routes/auth');

const bankAuth = require('./routes/bankAuth');
require('dotenv').config();

const app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Конфигуриране на сесията
app.use(session({
  secret: process.env.SESSION_SECRET || 'your-secret-key',
  resave: false,
  saveUninitialized: true
}));

app.use(passport.initialize());
app.use(passport.session());

// Сега можеш да използваш bankAuth
app.use(bankAuth);

// Дефинирай основен маршрут (пример)
app.get('/', (req, res) => {
  res.send('Welcome to the BulgPay API');
});

// Стартиране на сървъра
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

// Увери се, че bankAuth е валиден маршрутен модул
app.use('/api', bankAuth); // Например, добави префикс за API

// Основен маршрут
app.get('/', (req, res) => {
  res.send('Welcome to the BulgPay API');
});


// Middleware
app.use(express.json());

// Тестов рут
app.get('/', (req, res) => {
  res.send('Financial App Backend');
});

// Синхронизиране с базата данни и стартиране на сървъра
sequelize.sync({ alter: true })
  .then(() => {
    console.log('Database connected and synced.');
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });


app.use('/api/auth', authRoutes);

const bankAuthRoutes = require('./routes/bankAuth');

app.use(passport.initialize());
app.use('/api/bank', bankAuthRoutes);

const paymentRoutes = require('./routes/payments');

app.use('/api/payments', paymentRoutes);

const helmet = require('helmet');
const rateLimit = require('express-rate-limit');

// Използване на Helmet за защита
app.use(helmet());

// Rate Limiting
const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 минути
  max: 100, // Максимален брой заявки от IP адрес
  message: 'Твърде много заявки от този IP адрес. Опитайте отново по-късно.'
});
app.use(limiter);

const logger = require('./config/logger');

// Пример за логване на грешка
app.use((err, req, res, next) => {
  logger.error(err.message);
  res.status(500).send('Сървърна грешка');
});

  

My bankAuth.js:

const express = require('express');
const passport = require('passport');
const OAuth2Strategy = require('passport-oauth2').Strategy;
const router = express.Router();
require('dotenv').config(); 

passport.use('bank', new OAuth2Strategy({
  authorizationURL: 'https://example.com/oauth2/authorize',  // Временен URL
  tokenURL: 'https://example.com/oauth2/token',  // Временен URL
  clientID: process.env.CLIENT_ID,
  clientSecret: process.env.CLIENT_SECRET,
  callbackURL: process.env.CALLBACK_URL || 'http://localhost:3000/auth/bank/callback'
},
function(accessToken, refreshToken, profile, done) {
  // Обработване на профила и токените (може да оставиш празно за сега)
  return done(null, profile);
}
));

// Сериялизиране на потребителя в сесията
passport.serializeUser(function(user, done) {
done(null, user);
});

// Десериализиране на потребителя от сесията
passport.deserializeUser(function(user, done) {
done(null, user);
});


// OAuth2 route за стартиране на аутентификацията
router.get('/auth/bank', passport.authenticate('oauth2'));

// Callback route, на който потребителят се връща след успешен login
router.get('/auth/bank/callback', 
  passport.authenticate('oauth2', { failureRedirect: '/login' }),
  function(req, res) {
    // Успешен login, пренасочваме потребителя
    res.redirect('/');
  }
);

// Примерен route за logout
router.get('/logout', function(req, res) {
  req.logout(function(err) {
    if (err) { return next(err); }
    res.redirect('/');
  });
});


// Примерен маршрут за аутентикация
router.get('/auth', passport.authenticate('oauth2'));

// Callback маршрут
router.get('/auth/callback', 
    passport.authenticate('oauth2', { failureRedirect: '/' }),
    (req, res) => {
        // Успешна аутентикация
        res.redirect('/');
    }
);


module.exports = passport;

I can’t understand what need to make.