2015-10-07 148 views
0

我有以下我成功导出的自定义模块。在node.js中导出模块

module.exports = function(callback) { 

    var request = require("request") 
    var url = "http://sheetsu.com/apis/94dc0db4" 

    request({ 
     url: url, 
     json: true 
    }, function (error, response, body) { 

     if (!error && response.statusCode === 200) { 

      callback(body) 

     } 
    }) 

现在,如果我试图改变这个导出为以下内容的方式,我得到404错误。

var data = function(callback) { 

    var request = require("request") 
    var url = "http://sheetsu.com/apis/94dc0db4" 

    request({ 
     url: url, 
     json: true 
    }, function (error, response, body) { 

     if (!error && response.statusCode === 200) { 

      callback(body) 

     } 
    }) 

} 

module.exports = data; 

我做错了什么?

UPDATE

这是路由index.js呈现所接收的数据。

var data = require('../lib/data.js'); 

data(function(data) { 
    router.get('/', function(req, res, next) { 
     res.render('index', { 
     title: 'Express', 
     data: data 
     }); 
    }); 
}); 

,误差在在/Users/xxxxx/Dev/Project/app.js:32:13

我没有改变我除了如何改变出口部分其他任何代码。

+2

从什么获得404错误?这两段代码的操作是相同的,所以你必须有一些导致行为差异的其他代码。 – jfriend00

+1

你确定吗?这没有合乎逻辑的理由。 – undefined

+0

不确定为什么这篇文章是脱离主题。试图在这里学习一些东西。 请参阅我的更新了解更多详情。 –

回答

1

你应该打电话给你的函数的路中,没有一个副verca:

router.get('/', function(req, res, next) { 
    data(function(d) { 
     res.render('index', { 
     title: 'Express', 
     data: data 
     }); 
    }); 
}); 
+0

谢谢。在我的路由之外调用我的函数与我之前在'module.exports = {}中包装我的data.js的方法一起工作。所以,我仍然不明白为什么在这种情况下需要在路由中调用该函数? –

+0

我不知道这是如何工作的,因为它是不正确的。您应该首先定义所有路线并调用其中的行为,否则不能保证您的路线将在回调中定义 –