2016-09-17 67 views
2

我要抓取20個站點,爲了讓它更容易我想劃分每個站點在不同文件中的每個刮擦功能,但是當我這樣做時,我不斷收到來自其他快遞文件的呼叫功能

function scrape(url, callback) { 
     ^^^^^^^^^ 

SyntaxError: Unexpected identifier 
在我的索引

我有這個

var test = require('../services/test.js'); 

router.get('/scrape', function(req, res, next) { 

    test.scrape("url", function(error){ 
    if (!error) { 
     res.json({succees: "scraped"}); 
    } else { 
     res.json({error: error}); 
    } 

    }); 

}); 

和test.js我有這樣的事情

module.exports = { 

    function scrape(url, callback) { 



    } 
}; 
+0

有沒有一種方法可以改善我的答案?只是問,因爲你還沒有接受答案。 –

回答

3

你必須把它寫這樣的:

module.exports = { 
    scrape: function(url, callback) { 

    } 
}; 
在test.js

然後你就可以通過test.scrape();

稱之爲這是根本不成立的JavaScript像你這樣爲對象放置功能。您必須指定一個索引才能生效。或者它也可能是一個數組:

module.exports = [ 
    function scrape(url, callback) { 

    } 
]; 

你會被test[0]();注意稱呼它的名字是可選在這裏。 Why use named function expressions?

另一種選擇:

module.exports = function (url, callback) { 

}; 

那麼你會這樣稱呼它test();

所有這一切都沒有什麼Node.js加載特定的。您可以通過用var test替換上述示例的module.exports,訪問相同文件中的函數,從而使用標準JavaScript重現相同的行爲。

1

你應該使用的語法是:

module.exports = { 
    scrape: function(url, callback) { 

    } 
}; 

由於module.exports應指向一個對象,而且功能上的IT領域。

看一看here,這裏有一個很好的解釋。