我控制器Expressjs静态文件不工作
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'而不是'css/style.css' – marzelin
我有点困惑。如果你正在提供静态文件,它们将不会被视图引擎渲染,你的路由处理程序也不会被调用。我错过了什么吗? –
@marzelin你想发布这个答案吗?自那以后解决了。谢谢! – Paran0a