Route 在错误的位置查找静态文件

Route looks for statics files in the wrong place

出于某种原因,我有一个特定的路由 /admins/:id,它在 /public/admins/ 而不是 /public/ 中查找静态文件。这会导致 404 错误,并且不会为此页面加载 js 和 css 文件。所有其他路由在 /public/ 中查找静态文件。自从我开始编写应用程序以来,我从未更改过用于提供静态文件的中间件,所以我不知道错误代码可能在哪里。

例如,它在应该寻找 /stylesheets/bootstrap.min.css.

的时候寻找 /admins/stylesheets/bootstrap.min.css

app.js

var express = require('express');
var stormpath = require('express-stormpath');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

// include routes
var mainPage = require('./routes/mainPage');
var admins = require('./routes/admin');
var addAdmin = require('./routes/addAdmin');
var addDev = require('./routes/addDev');
var adminProfile = require('./routes/adminProfile');
var devs = require('./routes/dev');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// routes
app.use('/', mainPage);
app.use('/api/admins', admins);
app.use('/addAdmin', addAdmin);
app.use('/addDev', addDev);
app.use('/admins', adminProfile);
app.use('/api/devs', devs);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

module.exports = app;

adminProfile.js

var Admin = require('../models').sequelize.models.Admin;
var express = require('express');
var router = express.Router();

router.get('/:id', function(req, res, next) {
    Admin.findOne({
        where: {
            id: req.params.id,
        }
    })
    .then(function(admin) {
        if(!admin) {
            var err = new Error('Not Found');
            err.status = 404;
            res.render('error', { error: err });
        } else
            res.render('adminProfile', { admin: admin }); 
    });
});

module.exports = router;

您的 <link> 标签在 HTML 中是什么样子的?您可能需要通过在开头放置 / 来锚定 href 属性,如下所示:

<link type="text/css" href="/stylesheets/bootstrap.min.css" />

这将创建一个根相对 URL。参见 Having links relative to root?