Ошибка типа: Не удается прочитать свойство «метод» неопределенного выражения

#javascript #node.js #express

Вопрос:

Я создаю панель мониторинга для бота Discord, но я продолжаю получать ошибку TypeError: Не удается прочитать свойство «метод» неопределенного. Код моего приложения таков:

 const http = require('http');
const path = require('path');
const client = require("./Client");
const express = require('express');
const reqip = require('request-ip');
const passport = require('passport');
const Discord = require('discord.js');
const session = require('express-session');
const getFilesSync = require("..//Utils/fileWalk");
const SQLiteStore = require("connect-sqlite3")(session);
const { Strategy } = require('passport-discord').Strategy;
const port = process.env.port || 80;

class App {
  constructor(locals = {}) {
    this.express = express();
    this.express.set("view engine", "ejs");
    this.express.set("port", port);
    this.express.set("json spaces", 2);
    this.express.locals = locals;
    
    / * MiddleWare Functions * /;
    this.express.use(express.json());
    this.express.use(express.urlencoded({
      extended: false
    }))
    
    this.express.use(reqip.mw());
    this.express.use('/assets', express.static(__dirname   "/../Assets"));

    bindAuth(this.express, client);

    this.express.use(passport.initialize());
    this.express.use(passport.session());
    this.express.use(async (req, res, next) => {
      req.bot = client;
      next();
    });

  this.loadRoutes().loadErrorHandler();
  }

  listen(port) {
    return new Promise((resolve) => this.express.listen(port, resolve));
  }

  loadRoutes() {
    const routesPath = path.join(__dirname, "../routes");
    const routes = getFilesSync(routesPath);

    if (!routes.length) return this;

    routes.forEach((filename) => {
      const route = require(path.join(routesPath, filename));

      const routePath =
        filename === "index.js" ? "/" : `/${filename.slice(0, -3)}`;

      try {
        this.express.use(routePath, route);
      } catch (error) {
        console.error(`Error occured with the route "${filename}"nn${error}`);
      }
    });

    return this;
  }

  loadErrorHandler() {
    this.express.use((req, res) => {
      res.status(404);

      if (req.accepts("html")) return res.render("404", {req});

      if (req.accepts("json"))
        return res.send({
          status: 404,
          error: "Not found",
        });

      res.type("txt").send("404 - Not found");
    });

    return this;
  }
}


function bindAuth(app, client) {
  app.use(session({store: new SQLiteStore(), secret: "nosecretlol", resave: false, saveUninitialized: false}))

  passport.serializeUser(function(user, done) {
    done(null, user);
  })

  passport.deserializeUser(function(obj, done) {
    done(null, obj);
  })

  passport.use(
    new Strategy(
      {
        clientID: process.env.bot_id,
        clientSecret: process.env.bot_secret,
        callbackURL: process.env.bot_redirect,
        scope: ["identify", "guilds"]
      },
      function(accessToken, refreshToken, profile, done) {
        process.nextTick(function() {
          profile.tokens = { accessToken }
          return done(null, profile)
        })
      })
    )
  }

module.exports = App;

 

И в моем индексе я делаю свое приложение таким:

 const App = require("myfile");
(async () => {
await new App().listen(process.env.port || 80)
})()
 

Сообщение об ошибке находится в: node_modulesexpresslibмаршрутизаториндекс.js:139:34)
Я пытался со всеми и не могу решить эту проблему, я спрашивал многих людей, но никто не дал мне ответа, который мог бы решить мой вопрос.
Как я уже сказал, это для панели управления ботом Discord

Комментарии:

1. Можете ли вы определить строку кода приложения в сообщении об ошибке трассировки, которая вызвала express и породила внутреннюю ошибку? Если вы можете, пожалуйста, отредактируйте вопрос, чтобы включить детали, а не добавлять комментарий ниже.