代码之家  ›  专栏  ›  技术社区  ›  OT AMD

当您有两个不同的主路由时,如何在ejs文件中加载资源?

  •  0
  • OT AMD  · 技术社区  · 6 年前

    管理路由 但幸运的是,它能在常规路线上工作。我的express设置如下:

    app.use('/admin/pages', adminPages);
    app.use('/', pages);
    

    所以在调查了两个主要路线的chrome开发工具之后,这就是问题所在,但不知道如何解决它! 这是当管理路由不加载引导或css文件时: enter image description here 注意,所有资产的前缀都是不需要的(admin/pages/…)localhost:3005

    但它在这里起作用(没有前缀): enter image description here

    enter image description here

    完整App.js:

    const express = require('express'),
        app = express(),
        path = require('path'),
        mongoose = require('mongoose'),
        bodyParser = require('body-parser'),
        pages = require('./routes/pages.js'),
        config = require('./config/database'),
        expressSession = require('express-session'),
        expressValidator = require('express-validator'),
        adminPages = require('./routes/admin_pages.js');
    
    mongoose.connect(config.database);
    const database = mongoose.connection;
    database.on('error', console.error.bind(console, '@@error with database:'));
    database.once('open', () => {
        console.log('Connected To Database successfully');
    });
    
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');
    app.use(express.static(path.join(__dirname, 'public')));
    // app.use(express.static('public'));
    
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser.json());
    
    app.set('trust proxy', 1);
    app.use(
        expressSession({
            secret: 'keyboard cat',
            resave: false,
            saveUninitialized: true,
            cookie: { secure: true }
        })
    );
    
    app.use(require('connect-flash')());
    app.use(function(req, res, next) {
        res.locals.messages = require('express-messages')(req, res);
        next();
    });
    
    app.use(
        expressValidator({
            errorFormatter: function(param, msg, value) {
                var namespace = param.split('.'),
                    root = namespace.shift(),
                    formParam = root;
                while (namespace.length) {
                    formParam += '[' + namespace.shift() + ']';
                }
                return {
                    param: formParam,
                    msg: msg,
                    value: value
                };
            }
        })
    );
    
    app.use('/admin/pages', adminPages);
    app.use('/', pages);
    
    const port = 3005;
    app.listen(port, () => {
        console.log(`App Listening @ localhost:${port}`);
    });
    

    添加页面.ejs:

    <%- include('../_layouts/header') %>
    
        <form>
            <input type="text" />
            <input type="text" />
            <input type="text" />
            <button> submit </button>
        </form>
        <%- include('../_layouts/footer') %>
    

    以下是我的两条主要路线: enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   OT AMD    6 年前

    我找到了答案。

    app.use('/', express.static('public'));
    

    由于您有另一个用于管理/页面的路由,因此缺少此路由:

    app.use('/admin/pages', express.static('public'));