我一直在寻找这个问题的答案,但没有任何帮助我。有些解决方案也给了我更多错误。
我要做的是使用Node.JS路由到不同的页面。在MEAN堆栈上学到了一点,我决定使用Node,Express和Angular(尚未到达那里)。如果我试图去任何不是'/'路线的地方,我会收到一条错误,上面写着'找不到模块'html'。以下是有问题的代码:
//dependencies
var express = require('express');
var path = require('path');
var engines = require('consolidate')
//variables
var RUN_PORT = 8080;
var VIDEO_IN_PORT = 45679;
var CONTROL_OUT = 45678;
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
//index.html routing
app.get('/', function(req, res){
res.render("index.html");
});
//robot_control.html routing
app.get('/robot_control', function(req, res){
res.render("robot_control.html");
});
//error.html routing
app.get('/error', function(req, res){
res.render("error.html");
});
//showing that the program is running on the RUN_PORT
app.listen(RUN_PORT, function(){
console.log("Running on port " + RUN_PORT);
});
我在这里看不到什么?一切似乎都很好看。我在package.json中安装的所有内容都是Express。我能够很好地进入索引页面,但除此之外的任何内容都会导致错误。
答案 0 :(得分:1)
此问题是由使用res.render('SOMEFILE.html')
引起的,因为您没有告诉Express如何呈现.html
扩展名的文件。
由于您没有使用任何模板(还),您可以使用:
// Somewhere at the top:
const path = require('path');
const VIEWS = path.join(__dirname, 'views');
...
// In your route handlers:
res.sendFile('index.html', { root : VIEWS });
如果您想开始使用模板,请查看此处:http://expressjs.com/en/guide/using-template-engines.html