繁体   English   中英

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

[英]NodeJs - route parameters crash the file system on a client

这是我的服务器

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文件或客户端代码。

错误

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


编辑:整个目录

目录

首先,我使用默认的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>

如评论中所述,我必须编写/...

使用参数时,似乎我必须编写完整的路径,例如

"/Resources/img_logo.png"

代替

"Resources/img_logo.png"

在您的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'));

暂无
暂无

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

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