Я пытаюсь сделать кое-что с NightmareJS из функции Firebase.Вот мой код (минимально проверяемый пример)
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 не разрешает исходящий трафик на бесплатных планах, но после обновления до блэйза проблема все еще существует: (