错误:未指定默认引擎且未提供扩展名。简单路由

时间:2017-11-12 09:23:03

标签: javascript html node.js express server

我正在开发一个小型的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

1 个答案:

答案 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');