Error is "app.engine("handlebars", exphbs()); 'TypeError: exphbs is not a function
在对象。 '"
const express = require('express')
const exphbs = require("express-handlebars");
const path = require("path");
const app = express()
const port = 3000
app.engine("handlebars", exphbs());
app.set("view engine", "handlebars");
exphbs
不是函数,它是车把导出的东西的对象(参见文档)。你要使用的功能是exphbs.engine()
这样的:
app.engine("handlebars", exphbs.engine());
或者,您可以解构对象并直接取出
engine
:
const express = require('express')
const { engine } = require("express-handlebars");
const path = require("path");
const app = express()
const port = 3000
app.engine("handlebars", engine());
app.set("view engine", "handlebars");
我觉得可能是exphbs函数没有正确安装或导入:
npm install express-handlebars
导入:
const exphbs = require('express-handlebars');
如果不是这种情况,并且您已正确安装和导入它。然后看看更新到最新版本是否解决了问题:
npm update express-handlebars
编辑:既然我想到了,您需要在 exphbs 上调用 engine() 函数来获取可用于在 Express 应用程序中注册车把模板引擎的实际函数。
正确的代码应该是:
const express = require('express')
const exphbs = require("express-handlebars");
const path = require("path");
const app = express()
const port = 3000
app.engine("handlebars", exphbs.engine());
app.set("view engine", "handlebars");