【问题标题】:No default engine was specified and no extension was provided express没有指定默认引擎,也没有提供扩展名
【发布时间】:2020-05-22 05:32:25
【问题描述】:

我正在尝试仅使用 html 并从我的快速服务器呈现页面。我不断收到错误

No default engine was specified and no extension was provided.

我在 app.js 中指定了目录名,并告诉服务器使用路由器中的目录名进行渲染。我不确定是什么阻碍了我?有人可以提供一些见解吗?

app.js(我已经删除了不相关的导入语句)

var app = express();

app.use(express.static(__dirname + '/public'));  //setting static file directory
//Store all HTML files in view folder.

module.exports = app;

这是我在页面上调用渲染的索引路由器


var express = require('express');
var router = express.Router();
const path = require('path');

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('main', { title: 'Express' });
});

/* GET styles page. */
router.get('/style', function(req, res, next) {
  res.render('styles', { title: 'styles' });
});

/* GET styles page. */
router.get('/style',function(req,res){
  res.sendFile(path.join(__dirname+'/style.html'));
});





module.exports = router;

【问题讨论】:

    标签: javascript html express static


    【解决方案1】:

    如果你没有像 Handlebars 这样的渲染器,就我所知,你不能调用res.render。如果您提供静态视图,则无论如何都不需要渲染器,您只需指定静态文件所在的文件夹即可。

    这意味着在您指定静态文件夹后,您将能够通过在路径中包含文件名来访问文件。 Express' documentation on static files.你不需要路由来发送文件。

    示例

    CodeSandbox Example

    src
    |- view
    |  |- hello.html
    |- index.js
    

    index.js

    const express = require("express");
    //create a server object:
    const app = express();
    
    //Serve all files inside the view directory, path relative to where you started node
    app.use(express.static("src/view/"));
    
    app.listen(8080, function() {
      console.log("server running on 8080");
    }); //the server object listens on port 8080
    
    module.exports = app;
    

    您现在将在/hello.html 路线上看到hello.html。任何其他文件也将以其名称显示。

    【讨论】:

    • 感谢这对我帮助很大!我正在看一个不同的教程,有点迷路了。
    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2019-02-24
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多