没有指定默认的引擎,也没有提供任何扩展的快递

问题描述 投票:0回答:1

我试图只使用html,并从我的express服务器渲染页面。我一直收到以下错误信息

No default engine was specified and no extension was provided.

我在app.js中指定了dirname,我在路由器中用dirname告诉服务器渲染。我真的不知道是什么阻碍了我?谁能提供一些见解?

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;

这是我的索引路由器,我在这里调用render对页面进行处理


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个回答
0
投票

如果你没有像Handlebars这样的渲染器,你不能调用 res.render 据我所知。如果你是为静态视图服务,你不需要渲染器,你只需要指定静态文件所在的文件夹。

这意味着在你指定了你的静态文件夹之后,你将能够通过路由中的文件名来访问这些文件。快递》关于静态文件的文档。 你不需要路由来发送文件。

例子

CodeSandbox示例

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

索引.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 途径。任何其他文件也将在其名称下可见。

© www.soinside.com 2019 - 2024. All rights reserved.