从express中的其他文件调用函数

时间:2016-09-17 10:19:29

标签: javascript node.js express

我要刮掉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) {



  }
};

2 个答案:

答案 0 :(得分:3)

你必须把它写成:

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

    }
};
在test.js中

然后你可以通过test.scrape();

来调用它

将函数放置到对象中只是无效的JavaScript。您必须指定索引才能生效。或者它也可以是一个数组:

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

    }
];

您可以通过test[0]();来调用它。请注意,此处可以选择名称​​ scrape Why use named function expressions?

另一种选择:

module.exports = function (url, callback) {

};

然后你会把它称为test();

所有这些都不是Node.js特有的。您可以使用标准JavaScript重现相同的行为,将上述示例的module.exports替换为var test,访问同一文件中的函数。

答案 1 :(得分:1)

您应该使用的语法是:

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

  }
};

因为module.exports应指向一个对象,并且该函数是字段。

看看here,有一个很好的解释。