【问题标题】:express 4 router with external fileexpress 4 带有外部文件的路由器
【发布时间】:2014-05-05 14:00:01
【问题描述】:

我有以下文件

lib/pub
lib/pub/index.js
app.js

在 App.js 上

我有:

// app.js
var express = require("express")
, app = express()
, router = express.Router()
;
... 
router.use('/pub',require('./pub'));

然后在 index.js 上

// pub/index.js
var express  = require('express')
, router = express.Router()
;
console.log("file loaded successfully")
module.exports = function(){
  router.get('/',function(req,res){
     console.log("got the get request")
  })
}

我在执行localhost/pub 请求时遇到的问题,我从来没有得到got the get request,无论我尝试更改代码,尝试将pub 添加到路径中。

router.get('/',...
router.get('/pub',...
router.get('./pub,...
router.get('./',...
router.get('pub',...
etc...

我没有尝试过这些或任何其他愚蠢的工作方式...我永远无法让日志说是的,我收到了请求...

我做错了什么! (expressjs 变化如此频繁和彻底,任何网络教程都变得多余或其他人以前得到的任何帮助)

【问题讨论】:

    标签: node.js express routing


    【解决方案1】:

    (已编辑以反映 cmets)

    如果要将路由移动到外部文件,请使用以下模式:

    app.js

    var express = require('express');
    var app = express();
    
    require('./routes')(app);
    

    routes.js

    module.exports = function(app) {
      app.get('/pub', function(req, res) {
        console.log('got the get!');
        res.end();
      });
    };
    

    【讨论】:

    • 也不走运...我成功加载了文件...但是 index.js 怎么知道它是获取或发布等...?用这个方法?
    • 我仍然有点不确定您要做什么。什么类型的请求应该触发日志?
    • 如果我有请求 localhost/pub 我希望 got the get request,我会尽量避免 app.js 文件因同一文件上的大量路由而混乱,因为会有大量路由。跨度>
    • 是的,做到了,尽管./routes 必须是一个字符串,但我确信这是一个错字。
    • @Val 感谢您了解这一点。你介意投票/接受吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2014-08-07
    相关资源
    最近更新 更多