【问题标题】:Error: No default engine was specified and no extension was provided. in the browser错误:没有指定默认引擎,也没有提供扩展。在浏览器中
【发布时间】:2017-10-07 07:20:53
【问题描述】:

我正在使用带有node.js的mongo,我正在使用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);

上述代码在浏览器中渲染时在浏览器中抛出上述错误。任何人都可以在这方面提供帮助。

【问题讨论】:

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


    【解决方案1】:

    您需要指定您正在使用的视图引擎类型。例如 ejs、jade、pub、handlebars 或纯 html..

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

    // 视图目录将是 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()。渲染用于从视图引擎渲染视图模板

    【讨论】:

      【解决方案2】:
      app.use(
          express.static(path.join(__dirname, 'public'), {
              etag: false
          })
      );
      

      【讨论】:

      • 答案应始终包含一些解释,而不仅仅是代码 sn-p
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2020-10-24
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多