错误:需要callback函数

我正在尝试使用节点,expression式和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); }) 

我得到像下面的callback函数错误

 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? 提前致谢

       

网上收集的解决方案 "错误:需要callback函数"

正如你可以看到第7行app.engine('html', engines.nunjucks);日志 – 错误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次讲座开始时,我也面临同样的问题。 原因是我从头开始编写代码时安装了不正确的引擎依赖版本。

解决scheme是清除你的项目的本地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行有独立的nunjucksconsidate ,照顾这个给你。 你应该可以看到应用程序来罚款。

有同样的问题,通过解决:

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');