如何在Express中添加新的视图/路由?

时间:2015-06-29 14:12:30

标签: node.js twitter-bootstrap express

我是新手,我试图尽可能多地吸收。 我正在使用此模板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=

我遵循的步骤是: 创建视图和路径

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

但是当我尝试启动&#34; node app&#34;返回上面提到的错误。 我错在哪里?

2 个答案:

答案 0 :(得分:1)

您是否尝试过具体要求您的路线/ ask.js文件?我在使用

时非常肯定
require('folder')

要求直接查找索引文件并使用该索引文件,我认为这可能意味着您的routes / ask.js文件可能实际上没有得到&#34; required&#34;通过应用程序。

所以

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

要模块化您的代码,您可以将routes / index.js文件用作路由模块加载文件,您可以将路径模块(例如routes / ask.js)加载到索引文件中,这样您就不会获得通过在app.js文件中包含大量必需的路径模块而陷入困境。只需要index.js文件。

答案 1 :(得分:0)

您可以尝试以下方法:

  • 首先使用默认路由:app.get('/', routes.index);然后将代码放在app.get('/ask', routes.ask);
  • 之后
  • 如果它不起作用,请改为res.render('ask');最小回报res.send('some json');