2015-10-07 145 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

我不知道這是如何工作的,因爲它是不正確的。您應該首先定義所有路線並調用其中的行爲,否則不能保證您的路線將在回調中定義 –