Error: callback function required
Error: callback function required
我正在尝试使用 node、express 和 mongodb 将对象渲染为 html。当我尝试下面的代码时
var express=require('express'),
app=express(),
engines = require('consolidate'),
nunjucks = require('nunjucks');
app.set('view engine', 'html');
app.engine('html', engines.nunjucks);
app.set('views', __dirname + '/views');
app.get('/',function(req,res){
res.render('index',{'name':'Hello'});
})
app.use(function(req,res){
res.sendStatus(404);
})
var server = app.listen(3000,function(){
var port=server.address().port;
console.log('Express server listening on port', port);
})
我收到如下所示的回调函数错误
D:\Wiki>node app.js
D:\Wiki\node_modules\express\lib\application.js:174
if ('function' != typeof fn) throw new Error('callback function required');
^
Error: callback function required
at Function.app.engine (D:\Wiki\node_modules\express\lib\application.js:174:
38)
at Object.<anonymous> (D:\Wiki\app.js:7:5)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
有人可以帮助我如何使用 nunjucks 渲染 html 吗?提前致谢
如您在日志中所见 - 第 7 行错误 app.engine('html', engines.nunjucks);
。那么问题就来了。
添加新文件,例如templateEngine.js
var nunjucks = require('nunjucks');
module.exports = function (app) {
// store environment env
var env = nunjucks.configure(['views/', 'views2/'], {
autoescape: true,
express : app
});
// This is filter example. You can use it by {{varname | myFilter}} in template
env.addFilter('myFilter', function(text) {
return text.toUpperCase();
});
}
在主js调用中require('templateEngine')(app);
同学你好mongo大学生!
在开始本周 1 讲座时,我也遇到了同样的问题。原因是我在从头开始编写代码时安装了错误版本的 engines 依赖项。
解决方案是只清除项目的本地 node_modules,并在根目录和视图文件夹中只 app.js 模板。
像这样:
hello_world
--app.js
--views
----index.html
现在一一安装依赖项
npm install express
npm install consolidate
npm install nunjucks
终于
node app.js // to start the app.
此外,您不必在第 4 行中将 nunjucks 作为单独的依赖项,considate ,会为您解决这个问题。
您应该能够看到该应用正常运行。
有同样的问题,解决方法:
1) npm install consolidate nunjucks --save
2) 在 app.js/server.js/index.js 或任何您命名主应用文件的文件中定义合并:
var consolidate = require('consolidate');
3) 中间件应该是:
app.engine('html', consolidate.nunjucks);
app.set('views', './views');
来自 nunjucks
文档:
用快递?只需将您的 Express 应用程序传递到配置中:
var app = express();
nunjucks.configure('views', {
autoescape: true,
express: app
});
所以你可以这样做(假设你在包含此文件的同一目录中有一个 views
文件夹):
{code...}
var app = express();
var nunjucks = require('nunjucks');
nunjucks.configure(__dirname + '/views', {...
app.set('view engine', 'html');
{...}
注意使用nodejs__dirname
解析路径
我正在尝试使用 node、express 和 mongodb 将对象渲染为 html。当我尝试下面的代码时
var express=require('express'),
app=express(),
engines = require('consolidate'),
nunjucks = require('nunjucks');
app.set('view engine', 'html');
app.engine('html', engines.nunjucks);
app.set('views', __dirname + '/views');
app.get('/',function(req,res){
res.render('index',{'name':'Hello'});
})
app.use(function(req,res){
res.sendStatus(404);
})
var server = app.listen(3000,function(){
var port=server.address().port;
console.log('Express server listening on port', port);
})
我收到如下所示的回调函数错误
D:\Wiki>node app.js
D:\Wiki\node_modules\express\lib\application.js:174
if ('function' != typeof fn) throw new Error('callback function required');
^
Error: callback function required
at Function.app.engine (D:\Wiki\node_modules\express\lib\application.js:174:
38)
at Object.<anonymous> (D:\Wiki\app.js:7:5)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
有人可以帮助我如何使用 nunjucks 渲染 html 吗?提前致谢
如您在日志中所见 - 第 7 行错误 app.engine('html', engines.nunjucks);
。那么问题就来了。
添加新文件,例如templateEngine.js
var nunjucks = require('nunjucks');
module.exports = function (app) {
// store environment env
var env = nunjucks.configure(['views/', 'views2/'], {
autoescape: true,
express : app
});
// This is filter example. You can use it by {{varname | myFilter}} in template
env.addFilter('myFilter', function(text) {
return text.toUpperCase();
});
}
在主js调用中require('templateEngine')(app);
同学你好mongo大学生! 在开始本周 1 讲座时,我也遇到了同样的问题。原因是我在从头开始编写代码时安装了错误版本的 engines 依赖项。
解决方案是只清除项目的本地 node_modules,并在根目录和视图文件夹中只 app.js 模板。
像这样:
hello_world
--app.js
--views
----index.html
现在一一安装依赖项
npm install express
npm install consolidate
npm install nunjucks
终于
node app.js // to start the app.
此外,您不必在第 4 行中将 nunjucks 作为单独的依赖项,considate ,会为您解决这个问题。 您应该能够看到该应用正常运行。
有同样的问题,解决方法:
1) npm install consolidate nunjucks --save
2) 在 app.js/server.js/index.js 或任何您命名主应用文件的文件中定义合并:
var consolidate = require('consolidate');
3) 中间件应该是:
app.engine('html', consolidate.nunjucks);
app.set('views', './views');
来自 nunjucks
文档:
用快递?只需将您的 Express 应用程序传递到配置中: var app = express();
nunjucks.configure('views', {
autoescape: true,
express: app
});
所以你可以这样做(假设你在包含此文件的同一目录中有一个 views
文件夹):
{code...}
var app = express();
var nunjucks = require('nunjucks');
nunjucks.configure(__dirname + '/views', {...
app.set('view engine', 'html');
{...}
注意使用nodejs__dirname
解析路径