如何添加一个新的视图/路线expression?

我是新来的,我正在努力吸收。 我正在使用这个模板https://github.com/primaryobjects/Node.js-Bootstrap-Starter-Template好吧,直到这里,但是当我尝试添加一个新的页面,它返回给我以下错误:

C:\server\node_modules\express\lib\router\route.js:196 throw new Error(msg); ^ Error: Route.get() requires callback functions but got a [object Undefined] at Route.(anonymous function) [as get] (C:\server\node_modules\express\lib\r outer\route.js:196:15) at EventEmitter.app.(anonymous function) (C:\server\node_modules\express\lib \application.js:481:19) at Object.<anonymous> (C:\server\app.js:31:5) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3 

目的是要回答我在以下地址的新页面: http:// localhost:3000 / ask?america =

我遵循的步骤是:创build一个视图和一个path

 /views/ask.jade extends layout block content div.container h1 ASK 

2N

 /routes/ask.js exports.ask= function(req, res){ res.render('ask'); }; 

3R

 app.js app.get('/ask', routes.ask); 

但是,当我尝试启动“节点应用程序”返回我上面提到的错误。 我在哪里弄错了?

你有没有试过要求你的routes / ask.js文件? 我很确定使用时

 require('folder') 

要求直接查找索引文件,并使用该索引文件,我相信可能意味着您的routes / ask.js文件实际上可能不会被应用程序“要求”。

所以

 var askRoutes = require('./routes/ask') ... ... app.get('/', routes), app.get('/ask', askRoutes) 

要模块化你的代码,你可以利用你的routes / index.js文件作为路由模块的加载文件,在这里你的路由模块(如routes / ask.js)加载到你的索引文件中,这样你就不会陷入困境你的app.js文件中需要的path模块。 只需要index.js文件。

你可以试试以下几点:

  • 首先使用默认路由: app.get('/', routes.index); 然后把你的代码放在app.get('/ask', routes.ask);
  • 如果它不起作用,放置res.render('ask'); 最小返回值res.send('some json');