我控制器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