[英]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'); });
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 中看到的那样,我已经在路线上重新定义了我的公用文件夹,所以就像每次我创建路线时,我都在我创建的每条路线上重新定义了我的公用文件夹(否则它会在 / theCalledRoute文件夹中查找而不是/public 用于我的 static 文件),这很烦人但它有效。 但是,现在我将 /:id 添加到它正在查找 db/:id 文件夹以查找我所有的 static 文件而不是公共文件。 我会制作一个 app.use('/everyidever', router, express.static("public")); 对于所有的ID。 有一个更好的方法吗? . 我需要从我的 app.js 中导出必要的变量才能正常工作。 如果您需要更多信息,请告诉我
第一个文件开头的 static assets 的public
dir 的定义是正确的
// app.use('/public', express.static(__dirname + "/public"))
static 文件(样式、js、图像、文件等)的 URL 在模板中应以/
开头,例如,假设您在/public
目录中有一个名为logo.png
的图像,因此在模板中您应该参考对它来说:
<img src="/logo.png"/>
Node JS 将从您配置的目录public
提供该图像,注意/
在路径的开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.