繁体   English   中英

使用express.js和jade处理路由和文件

[英]Handling routes and files with express.js and jade

当我转到1级深度的路由时,在访问node.js Web应用程序中的某些图像文件时遇到了一些麻烦。 这是因为css会寻找将1级的资产添加到指定路径的开头的资产。

例如,在我的布局中,我有一个名为main.css的css文件的链接。 main.css有一个名为.icon{background:url('../imgs/ok.png');}当我转到登录页面app.get('/login', routes.login) ,该文件是/imgs/ok.png ,此处图像加载到UI中。 当我尝试访问具有一个附加级别app.get('/events/:id', routes.loadEvent)的以下路由时,会发生问题。 该额外级别将添加到css url /events/imgs/ok.png ,并且图像不再加载到UI中。

如果有人可以帮助我找出解决此问题的方法,我将不胜感激。

提前致谢

这是我的app.js文件

module.exports = function (Events, db) {
    var express = require('express');
    var validator = require('validator');
    var MongoStore = require('connect-mongo')(express);
    var passport = require('./auth');
    var routes = require('./routes')(Events);
    var path = require('path'); 
    var app = express();

    // all environments
    app.set('port', process.env.PORT || 4000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.cookieParser());
    app.use(express.session({
        secret: 'keyboard cat',
        store: new MongoStore({mongoose_connection: db})
    }))
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(express.bodyParser({uploadDir:'./uploads'}));
    app.use(express.methodOverride());
    app.use(function (req, res, next) {
        res.set('X-Powered-By', 'TShare');
        next();
    });
    app.use(app.router);
    app.use(express.static(path.join(__dirname, './public')));
    app.use("/event", express.static(path.join(__dirname, './public')));

    // development only
    if ('development' == app.get('env')) {
        app.use(express.errorHandler());
    }

    app.get('/events/:id', routes.singleEvent);
    app.get('/login', routes.login);



    return app;
}

您正在css中使用相对路径-更改它们以便它们以~/开头~字符表示应用程序的根。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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