我正在开发一个小型的Web项目,并尝试在node.js&中与基本路由相处。表达。 服务器正常启动并显示所有网站,但是当转到第二页加载一些(简单)服务器数据时,会发生错误。
服务器代码:
const express = require('express'); //importiert express modul
const app = express(); //und bildet eine Express-Application
const server = require('http').createServer(app);//importiert http modul und bildet Server
/*
die dateien (bilder, skripte, css und html dokumente (public ordner))
werden statisch aus dem jeweiligen Verzeichnis geladen
kann später so "GET localhost/style.css" aufgerufen werden
*/
app.use(express.static(__dirname + '/public'));
app.use('/img', express.static(__dirname + '/public/images'));
app.use('/javascript', express.static(__dirname + '/public/javascripts'));
app.use('/css', express.static(__dirname + '/public/stylesheets'));
/*
So wird die index.html Datei beim Zugriff auf den Server (http://127.0.0.1:1337/) ausgegeben
Die index.html wird beim Zugriff auf den Server ausgegeben
*/
app.get('/', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
//Server auf port 1337
server.listen(1337);
console.log('Der Server läuft nun unter http://127.0.0.1: 1337');
路由文件夹中的路由代码
var express = require('express');
var router = express.Router();
var jsondata = "DATA";
/* GET home page. */
router.get('/api/alleAssets', function(req, res, next) {
console.log('Ich bin in der Methode');
res.send({bla :'bla'})
});
module.exports = router;
对不起德语中的一些命令。我认为理解这些基本代码并不重要。 谢谢你的帮助。
编辑: 这是控制台日志和第二页上的错误消息: (正文连接到onload函数)
> peasec@0.0.0 start C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec
> node ./bin/www
Der Server läuft nun unter http://127.0.0.1: 1337
Error: No default engine was specified and no extension was provided.
at new View (C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\view.js:61:11)
at Function.render (C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\application.js:570:12)
at ServerResponse.render (C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\response.js:971:7)
at C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\app.js:41:7
at Layer.handle_error (C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\router\layer.js:71:5)
at trim_prefix (C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\router\index.js:315:13)
at C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\node_modules\express\lib\router\index.js:275:10)
at C:\Users\Tim\Documents\University\UIP\PearSecExpress\PearSec\peasec\app.js:30:3
答案 0 :(得分:0)
您需要设置模板引擎来呈现页面。模板引擎的示例是Jade,EJS等。下面的代码行将您的模板引擎设置为EJS,并使用它来呈现HTML内容。
app.set('view engine', 'ejs');
使用EJS作为模板引擎需要您的公共文件为.ejs扩展名。以下链接将帮助您基本了解EJS的工作原理。 https://scotch.io/tutorials/use-ejs-to-template-your-node-application
试一试,让我知道它是否有效。
修改强>
忘记提及,只有在HTML页面中使用动态内容时才需要EJS。如果您有静态页面,则只需发送该静态页面的路径即可。
res.sendFile('/path/to/page.html');