NodeJs - 路由参数使客户端上的文件系统崩溃

时间:2017-12-11 11:35:37

标签: node.js express

这是我的服务器

const path = require('path');
const express = require('express');
const exphbs  = require('express-handlebars');
const bodyParser = require('body-parser');

const handlebars = exphbs.create({
    defaultLayout: 'index',
    extname: 'hbs'
});

const app = express();

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

require('./Server/Routes/questionnaire')(app);

app.engine('hbs', handlebars.engine);
app.set('view engine', 'hbs');

app.use(express.static(path.join(__dirname, 'Public')));

app.listen(8888, function () {
    console.log('Server running on port 8888');
});

我使用这条路线

module.exports = function (app) {

    app.get('/questionnaire', function (req, res) {
        res.render('questionnaire', {
            eventInfo: {
                description: "TEST",
                imgHost: "Resources/img_logo.png"
            }
        });
    });
};

代码工作正常。向路由/questionnaire/:id添加参数时,未找到css文件或客户端代码。

Error

我错过了什么?在我的路由中使用参数应具有正确的语法。在路径中使用参数时,只会出现此错误。

修改 整个目录

Directory

首先,我使用默认的HTML index.hbs

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>

<link href="Style/base.css" rel="stylesheet">
<link href="Style/header.css" rel="stylesheet">
<link href="Style/button.css" rel="stylesheet">
<link href="Style/input.css" rel="stylesheet">
<link href="Style/link.css" rel="stylesheet">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

<script src="Client/header.js"></script>

<body>

<div id="header">

</div>

{{{body}}}

</body>
</html>

我渲染了我的questionnaire.hbs模板

<link href="Style/Templates/questionnaire.css" rel="stylesheet">

<script src="Client/Templates/questionnaire.js"></script>

<div id="content">

</div>

2 个答案:

答案 0 :(得分:0)

正如评论中所提到的,我必须写/...

使用参数时,我似乎必须编写像

这样的完整路径

"/Resources/img_logo.png"

而不是

"Resources/img_logo.png"

答案 1 :(得分:0)

在你的app.js中试试这个

//comment this line
//app.use(express.static(path.join(__dirname, 'Public')));

//add this middleware
app.use(express.static('./Public'));
app.use('/Style',express.static('./Public/Style'));
app.use('/Client',express.static('./Public/Client'));