ERR_INVALID_CALLBACK
错误通常发生在 Node.js 中,当你尝试使用一个非函数类型的值作为回调函数时。在 Express 框架中,这个错误可能是因为你在设置视图引擎或者中间件时传递了一个无效的回调。
Express 使用 --view=hbs
参数来指定使用 Handlebars 作为模板引擎。如果你在初始化应用时遇到了 ERR_INVALID_CALLBACK
错误,可能是因为你在调用 express()
函数时传递了一个非函数的参数。
以下是一个正确设置 Express 应用并使用 Handlebars 的示例:
const express = require('express');
const exphbs = require('express-handlebars');
const app = express();
// 设置 Handlebars 视图引擎
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
// 正确的中间件使用示例
app.use((req, res, next) => {
// 这里是一个有效的回调函数
next();
});
app.get('/', (req, res) => {
res.render('index'); // 渲染 index.handlebars 视图
});
app.listen(3000, () => {
console.log('App is listening on port 3000!');
});
如果你遇到了 ERR_INVALID_CALLBACK
错误,请检查以下几点:
express()
时没有传递任何参数,或者传递的是一个函数。app.engine()
和 app.set()
方法。如果你仍然遇到问题,可以尝试以下步骤来调试:
console.log
或调试器来检查传递给 Express 的参数。如果错误信息中包含了具体的文件名和行号,可以直接定位到问题代码,并检查那里是否有传递错误的回调函数。
领取专属 10元无门槛券
手把手带您无忧上云