我正在尝试路由多个HTML页面。它加载index.html文件,但是当我想加载raw.html时,它说
错误:无法在视图目录
中查找视图“错误”
app.js
var routes = require('./routes/index');
var users = require('./routes/users');
var raw = require('./routes/raw');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
app.use('/raw', raw);
/routes/index.js
var express = require('express');
var router = express.Router();
var path = require('path');
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname + '/public/index.html'));
});
module.exports = router;
/routes/raw.js
var express = require('express');
var router = express.Router();
var path = require('path');
router.get('/raw', function(req, res) {
res.sendFile(path.join(__dirname + '/public/raw.html'));
});
module.exports = router;
答案 0 :(得分:1)
您正在配置express以使用pug(以前称为 jade )模板引擎。
template engine 可让您在自己的网站中使用静态模板文件 应用。在运行时,模板引擎替换a中的变量 具有实际值的模板文件,并将模板转换为 HTML文件发送到客户端。这种方法使设计更容易 一个HTML页面。
上面提到的错误是因为error.pug
目录中没有名为views
的模板文件。模板引擎捕获第一个错误,即:
错误:ENOENT:没有这样的文件或目录,
然后尝试呈现错误模板。
res.sendFile(path.join(__dirname + '/public/index.html'));
文件routes/index.js
中的上一行将尝试发送routes/public/index.html
,该文件不存在。
您可以在请求处理程序中使用正确的路径修复您的快速配置,例如:
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname + '/../public/index.html'));
});
您还应该删除模板引擎配置,因为您似乎没有使用它。
答案 1 :(得分:0)
您在评论中提到要使用Angular,所以... 如果要使用Angular,则不需要视图引擎。
使用Angular时," main"您网站的一部分位于客户'在index.html文件中(这不是100%正确,只是一个例子)。 该部分(在用户浏览器中)具有向服务器发送http请求的JS代码(Angular) - $http。
服务器部分基本只是操作这些请求并将数据发送回客户端的Angular,然后您可以在客户端执行您想要的数据。 您可以使用Node,PHP等响应这些请求。 这类似于AJAX背后的想法,当只更改页面的一小部分而不重新加载整个页面时。
另一方面,如果您使用的是视图引擎,那么当服务器收到请求时,例如:
app.get('/',.routes.views.home);
服务器呈现整个html页面并将其发送到客户端,因为它与PHP一起使用。