node express express.static阻止从根路径'/'访问

时间:2016-01-21 18:48:31

标签: node.js express

我正在使用快递,我有一个捕捉所有路线

router.use('*',function(){...});

和根路径

router.use('/', function(){...});

我将此路线放在

之后
app.use(express.static(path.join(__dirname, 'public')));

这会导致我的路线在放置在上一行下方时不会触发。但是,如果我把我的路线放在它上面,我的捕获全部也会被静态资产请求调用。有没有办法可以捕获所有请求,除了我的公共文件夹中的资产,包括路由'/'?我不想使用正则表达式,并且每次将目录添加到公共目录时都必须更新它。

对不起,这里没有更多细节是相关文件

//app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

/* This is going to initialize the menubar for nwjs it is currently commented out as this is a non issue at this point
setTimeout(function () {

    //initialize passport
    var passport = require('./helpers/passport.js');
    //setup routes

    //setup window menu
    console = window.console;
    console.log(passport);
    passport.init(app);
    var gui = window.require('nw.gui');
    var win = gui.Window.get();
    var menu = new gui.Menu({
        type: 'menubar'
    });
    menu.createMacBuiltin('jist', {
        hideEdit: true,
        hideWindow: true
    });
    gui.Window.get().menu = menu;
},1000);*/
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');


// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__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')));

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

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function (err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function (err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});
module.exports = app;
//window.location.href="http://localhost:3000";

这是我的索引路由器

//routes/index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.use('*', function(req, res, nex){
    var path = req.originalPath;
    if(~['/users/login', '/users/signup'].indexOf(path) || req.user) return next();
    if(!req.user) return res.redirect('/users/login');
});
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
module.exports = router;

0 个答案:

没有答案