У меня проблема с функциями firebase. Мне нужно вызвать внешний API, поэтому я использую пакет запроса. Что никогда не было проблемой для других проектов. Теперь я столкнулся с ситуацией, когда я могу развернуть свою функцию, если я только вызываю request(options)
. Но я не смогу развернуть функцию, если добавлю обратный вызов, например:
request(options, function (err, res, body) {})
Я не получаю очень полезный журнал. Все, что я вижу в журнале отладки, это:
10 silly lifecycle functions@~lint: Args: [ '/d /s /c', 'tslint --project tsconfig.json' ]
11 silly lifecycle functions@~lint: Returned: code: 2 signal: null
12 info lifecycle functions@~lint: Failed to exec lint script
13 verbose stack Error: functions@ lint: `tslint --project tsconfig.json`
13 verbose stack Exit status 2
13 verbose stack at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:301:16)
13 verbose stack at EventEmitter.emit (events.js:189:13)
13 verbose stack at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:189:13)
13 verbose stack at maybeClose (internal/child_process.js:970:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid functions@
Если это интересно, мой пакет. json это:
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "10"
},
"main": "lib/index.js",
"dependencies": {
"@google-cloud/firestore": "^3.5.0",
"buffer": "^5.6.0",
"cors": "^2.8.5",
"dateformat": "^3.0.3",
"firebase-admin": "^8.12.1",
"firebase-functions": "^3.6.1",
"request": "^2.83.0"
},
"devDependencies": {
"tslint": "^5.12.0",
"typescript": "^3.2.2"
},
"private": true
}
Я действительно не могу найти причину, по которой обратный вызов предотвратит развертывание.
Я был бы очень признателен за любую помощь. Спасибо!
Обновление: Моя функция особо не работает
exports.testApi = functions.https.onRequest((req, res) => {
var body = {
'key': 'val'
}
var options = {
uri: 'https://google.com',
method: 'POST',
body: body
}
// This works:
request(options);
//This can not be deployed
request(options, function(err, res, body) {
console.log(body);
});
});