Expressjs静态文件不起作用

时间:2016-04-21 13:51:37

标签: javascript node.js express

我的控制器

exports.index = function(req, res){
    var info = {title: 'Index'};
    res.render('index' , info);
};

exports.about = function(req, res){
    var info = {title: 'about'};
    res.render('about' , info);
};

exports.post = function(req, res){
    var info = {title: 'Post'};
    res.render('post' , info);
};

我的路线。

var controller = require('../controllers/controller');
var router = require('express').Router();

router.route('/').get(controller.index)
router.route('/posts/:slug').get(controller.post)
router.route('/about').get(controller.about);

module.exports = router;

Server.js

var express = require('express');
var bodyParser = require('body-parser');
var exphbs = require('express-handlebars');
var router = require(__dirname + '/routes/router');

var app = express();

app.set('views', __dirname + '/views');

app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');

app.use(bodyParser.urlencoded({
  extended: true
}));

app.use(bodyParser.json());

var port = process.env.PORT || 8090;

app.use('/', router);

app.use(express.static(__dirname + '/public'));

app.listen(port);

问题

当我到http://localhost:8090/http://localhost:8090/about我的静态文件工作时。

但是,如果我访问任何帖子,例如http://localhost:8090/posts/lorem-ipsum,我会在浏览器控制台中获得GET error。 (尝试从路径http://localhost:8090/posts/css/style.css服务器文件)

1 个答案:

答案 0 :(得分:0)

您必须首先提供静态文件然后再提供路线,只需切换这样的行:

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