在Firebase函数中使用时,噩梦JS停滞

时间:2019-03-27 23:26:29

标签: javascript firebase web-scraping google-cloud-functions nightmare

我正在尝试从Firebase函数中使用NightmareJS进行抓取。这是我的代码(最少的可验证示例)

const functions = require('firebase-functions');
const admin = require('firebase-admin')
admin.initializeApp()
const Nightmare =  require('nightmare');

exports.helloWorld = functions.https.onRequest((request, response) => {
  const nightmare =  Nightmare()
  return nightmare.goto('https://apple.com')
                  .end()
                  .then(function() {
                     console.log('success')
                     response.status(200).send("Script successfully completed")
                  })
                  .catch(function(data) {
                     console.log('error')
                     response.status(400).send('something went wrong' + data)
                  })
 })

当我在本地测试该功能时,此代码可以正常工作。脚本访问页面,然后触发then()子句。但是,如果我部署并触发该函数,它将到达nightmare.goto行,然后停顿。它不会引发错误(如果发生错误,将被catch子句捕获,并且我将得到响应)。相反,它会在60秒后超时。那里发生了什么事?

要为不熟悉nightmareJS的人解释,end()将噩梦呼叫链变成了一个承诺。同样,该代码在本地运行良好,这是最大的提示。我认为这可能与以下事实有关:firebase不允许免费计划中的出站流量,但是在升级后大发雷霆,问题仍然存在:(

0 个答案:

没有答案