我使用 NodeJs , Express 和 Handlebars 。
我的服务器文件app.js
const express = require('express');
const exphbs = require('express-handlebars');
const app = express();
app.engine('handlebars', exphbs({defaultLayout: 'index'}));
app.set('view engine', 'handlebars');
app.get('/start', function (req, res) {
res.render('start'); // render the "start" template
});
app.listen(8888, function () {
console.log('Server running on port 8888');
});
因此,当传递路线localhost:8888/start
时,应该有我的index.handlebars
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Foo</title>
</head>
<link href="../../CSS/requirements.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<body>
<p>TEST - This is on all pages</p>
{{{body}}}
</body>
</html>
和要加载的模板(start.handlebars
)
<script src="../Client/start.js"></script>
<p>Template 1 is active</p>
我的目录结构
运行服务器时,我的路由正常加载,但问题是,浏览器无法找到脚本和css文件。
我检查了我的路径,但我认为它们可能是正确的。我错了吗?
答案 0 :(得分:1)
您必须在static
应用中设置express
文件夹。添加以下中间件
app.use(express.static(path.join(__dirname, 'public')));
之后
app.set('view engine', 'handlebars');
在根级别创建公用文件夹,并将Client
和CSS
文件夹移动到该public
文件夹中。
参考:Link