Express js 渲染:TypeError: this.engine 不是一个函数。

12 浏览
0 Comments

Express js 渲染:TypeError: this.engine 不是一个函数。

我得到了TypeError: this.engine不是一个函数的错误。我不知道为什么会出现这个错误。请问有人可以帮我解决这个问题吗?

我的服务器文件:

var express = require('express');
var path = require('path');
var app = express();
//配置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文件:






    Hello Express


我得到了错误

enter image description here

我的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

0
0 Comments

Express.js是一个流行的Node.js框架,用于构建Web应用程序和API。它使用模板引擎来动态生成HTML页面。然而,当尝试使用不兼容的模板引擎时,可能会引发错误。

在这种情况下,错误消息为"Express js render : TypeError: this.engine is not a function"。这个错误发生的原因是使用了一个不兼容的模板引擎,具体来说是html包。

html包并不是一个可以与Express一起使用的模板引擎,而是一个HTML格式化程序命令行实用工具。因此,当我们尝试将html包作为模板引擎来渲染页面时,会出现这个错误。

为了解决这个问题,我们需要使用Express支持的模板引擎。可以在Express的官方文档中找到一些可以与Express一起使用的模板引擎的列表。

在这里,我们可以找到这个链接:Using template engines with Express。在这个链接中,列出了一些常用的模板引擎,如EJS、Handlebars、Pug等。我们可以选择其中一个模板引擎,并按照文档中的说明来安装和配置它。

以下是一个示例,展示了如何使用EJS模板引擎来解决这个问题:

首先,我们需要安装ejs模块。可以使用以下命令来安装它:

npm install ejs

在Express应用程序中,我们需要设置模板引擎为ejs,并指定模板文件的文件扩展名为.ejs。可以在app.js(或其他入口文件)中添加以下代码:

const express = require('express');
const app = express();
// 设置模板引擎为ejs
app.set('view engine', 'ejs');
// 设置模板文件的文件扩展名为.ejs
app.set('views', path.join(__dirname, 'views'));
// 其他中间件和路由的设置...
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

通过这些步骤,我们成功地解决了"Express js render : TypeError: this.engine is not a function"错误。现在,我们可以继续使用Express和EJS模板引擎来渲染页面。

总结起来,当出现这个错误时,我们需要检查使用的模板引擎是否与Express兼容。如果不兼容,我们需要选择一个兼容的模板引擎,并按照文档中的说明进行安装和配置。这样,我们就可以解决这个错误,并继续使用Express来构建Web应用程序和API。

0
0 Comments

Express js render : TypeError: this.engine is not a function这个问题的出现的原因是你安装的html包与Express没有关联。所以当你告诉Express使用它时,它会失败。

如果你想要提供静态HTML文件,请参考这个问题的答案和Express文档。最简单的方法是使用以下代码:

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

感谢你的编辑和回复。

0