繁体   English   中英

为我的 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 中看到的那样,我已经在路线上重新定义了我的公用文件夹,所以就像每次我创建路线时,我都在我创建的每条路线上重新定义了我的公用文件夹(否则它会在 / 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM