错误:未指定默认引擎且未提供扩展名。在浏览器中

时间:2017-05-09 05:51:04

标签: node.js mongodb express ejs template-engine

我正在使用mongo和node.js,我使用mongodb npm包连接db和我的代码,如下所示。

var express = require('express');
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/STUDENT";

var app = express();


MongoClient.connect(url, function(err, db) {

  console.log("Connected correctly to server");
  findDOcuments(db);
  db.close();
});

var entireDoc = '';
var data = function(data, id){
  if(id == 'records'){
    entireDoc = JSON.stringify(data);
  }
}

var findDOcuments = function(db) {
  // Get the records collection 
  var collection = db.collection('records');
  // Find some records 
  collection.find({}).toArray(function(err, docs) {
    console.log("Found the following records");
    console.log(docs);
    data(docs,'records');
  });
}

app.get('/getInfo', function(req, res){
  res.render(entireDoc);
})
app.listen(3000);

以上代码在浏览器中呈现时在浏览器中抛出上述错误。任何人都可以为此提供帮助。

2 个答案:

答案 0 :(得分:3)

您需要指定表达您正在使用的典型视图引擎。例如ejs,jade,pub,handlebars或plain html ..

在中间件下面的代码中添加以下内容:

// views目录将是project_folder / views。所以基本上当你给出一个模板文件名来渲染时,它应该知道在哪里找到它。所以在路径下方设置。

app.set('views', path.join(__dirname, 'views'));

//指定视图引擎并使用它你需要像npm install一样安装--save ejs

app.set('view engine', 'ejs');

所以当你说res.render(' products');

它将在project_folder / views /

中搜索product.ejs文件

此外,如果要发送直接字符串,可以使用res.send(),或者如果要发送json,可以使用res.json()。渲染用于从视图引擎渲染视图模板

答案 1 :(得分:1)

app.use(
    express.static(path.join(__dirname, 'public'), {
        etag: false
    })
);