Express js渲染:TypeError:this.engine不是函数[重复]

Posted

技术标签:

【中文标题】Express js渲染:TypeError:this.engine不是函数[重复]【英文标题】:Express js render : TypeError: this.engine is not a function [duplicate] 【发布时间】:2017-09-26 08:02:47 【问题描述】:

我收到 TypeError:this.engine 不是函数。我不知道为什么会收到此错误。谁能帮我解决这个问题。

我的服务器文件:

var express = require('express');

var path = require('path');

var app = express();

//configure app
app.set('view engine', 'html');
app.set('views', path.join(__dirname, 'views'));

app.get('/', function (req, res) 
    res.render('index');
);


app.listen(3000, function() 
    console.log('Ready on port 1337');
);

还有我的 HTML 文件:

<!DOCTYPE html>
<html>

<head>

</head>

<body>
    <div>Hello Express</div>
</body>

</html>

我得到了错误

我的 package.json:


    "name": "app",
    "version": "1.0.0",
    "main": "index.html",
    "directories": 
        "test": "test"
    ,
    "scripts": 
        "test": "echo \"Error: no test specified\" && exit 1"
    ,
    "author": "mehadi",
    "license": "UNLICENSED",
    "dependencies": 
        "express": "4.13.0",
        "html": "^1.0.0"
    ,
    "repository": 
        "type": "git",
        "url": "(github.com/mehadi07/Random.git)"
    ,
    "devDependencies": ,
    "description": ""

我通过

安装了html 引擎 npm install --save html

【问题讨论】:

你的package.json 是什么?你在哪里注册这个'html' 视图引擎,你在注册什么引擎? 您尝试使用什么模板引擎?我不认识html-template 引擎。您是否安装了引擎(使用npm)?请RTFM:expressjs.com/en/guide/using-template-engines.html "name": "app", "version": "1.0.0", "main": "index.html", "directories": "test": "test" , "scripts": "test": "echo \"Error: no test specified\" && exit 1" , "author": "mehadi", "license": "UNLICENSED", "dependencies": "express ": "4.13.0", "html": "^1.0.0" , "repository": "type": "git", "url": "(github.com/mehadi07/Random.git)" , "devDependencies": , "描述": "" 我使用了 npm install --save html @MdMehadiHasanMozumder:要改进问题、添加详细信息等,请使用“编辑”链接,而不是 cmets。 【参考方案1】:

html 包不是可以与 Express 一起使用的模板引擎。相反,它是一个 HTML 漂亮的打印机 CLI 实用程序

请参阅Using template engines with Express 了解可与 Express 配合使用的模板引擎列表。

【讨论】:

【参考方案2】:

您安装的html package 与 Express 无关。所以如果你告诉 Express 使用它,它就会失败也就不足为奇了。

如果您希望提供静态 HTML 文件,请参阅 this question's answers 和 Express documentation。最简单的方法就是

app.use(express.static('views'));

【讨论】:

感谢您的编辑和回复。

以上是关于Express js渲染:TypeError:this.engine不是函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Express JS TypeError: Cannot read properties of undefined (reading '0') SQL query error

node_modules/express/lib/router/index.js:458 throw new TypeError('Router.use() requires a middleware

使用 node express 从类中渲染方法

渲染中的 Vue.js 错误:“TypeError:无法读取未定义的属性‘长度’”

Express.js 服务器端渲染 - 请求 '/json/version/

在 express 节点 js 中重新渲染 EJS 模板