为我的 node.js 项目设置路由器

Setting up routers for my node.js project

所以我 运行 在为我的 node.js 应用设置路线时遇到了很多问题

这是我的 app.js 以及我如何调用路由

const express = require("express");
const bodyParser = require("body-parser");
const app = express();
require('dotenv').config()
const passport = require('passport')
const flash = require('express-flash')
const session = require('express-session')
const initializePassport = require('./passport-config')


const saltRounds = 10;
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(express.static("public"));
// app.use('/public', express.static(__dirname + "/public"))
app.use(flash())
app.use(session({
  secret: process.env.SESSION_SECRET,
  resave: false,
  saveUninitialized: false
}))
app.use(passport.initialize())
app.use(passport.session())


//Routes

// app.use(require('./routes'));
require('./routes/index.js')(app, passport, bcrypt, checkAuthenticated, checkNotAuthenticated, dbSize, saltRounds, User, setupDb);
require('./routes/dashboard.js')(app, passport, checkAuthenticated, checkNotAuthenticated, User, User_database, dbSize, Db_size, setupDb);
require('./routes/db.js')(app, passport, checkAuthenticated, checkNotAuthenticated, User, dbSize, User_database, Db_size, Db_tablespace, setupDb);
//GETS and POSTS


app.get('/logout', function (req, res) {

  req.logout();
  res.redirect("/");

});

app.use((req, res) => {
  res.status(404).render('404');
});
这是我的路线之一 db.js

var express = require('express');
var router = express.Router();
const Db_size = require('../db/models/db_size')
const Db_tablespace = require('../db/models/db_tablespace')

module.exports = (app, passport, checkAuthenticated, checkNotAuthenticated, User,dbSize,User_database,Db_size,Db_tablespace,setupDb) => {

    
    router.get('/:id/db_size', checkAuthenticated, async function (req, res) {
        const id = req.params.id;
        try {
            let dbSizeInfo = await Db_size.query().where('db_id',id)
            res.render("db-size", {
                free: dbSizeInfo[0].db_free,
                used: dbSizeInfo[0].db_used
            });
            app.use('/db/'+id , express.static("public"));

        } catch (error) {
            console.error(error)
        }

    });

    app.use('/db', router , express.static("public"));
    // app.use('/db/?', express.static("public"));

}

正如您在 db.js 中看到的那样,我在路线上重新定义了我的 public 文件夹,所以就像每次我创建路线时一样,我在每个路线上都重新定义了我的 public 文件夹我制作的路线(否则它会在 /theCalledRoute 文件夹中查找我的静态文件,而不是 /public ),这很烦人但它有效。但是,现在我将 /:id 添加到它正在查找 db/:id 文件夹以查找我所有的静态文件而不是 public。我会做一个 app.use('/everyidever', router , express.static("public"));对于所有的ID。 有更好的方法吗?。我需要从我的 app.js 导出必要的变量以使一切正常。如果您需要更多信息,请告诉我

第一个文件开头的静态资源public目录定义正确

// app.use('/public', express.static(__dirname + "/public"))

静态文件(样式、js、图像、文件等)的 URL 在模板中应以 / 开头,例如,假设您有一个名为 logo.png/public 目录中,因此在您的模板中您应该将其称为:

<img src="/logo.png"/>

Node JS 将从您配置的目录 public 提供该图像,请注意路径开头的 /