首页 > 解决方案 > 如果我向请求添加回调,则无法部署功能

问题描述

我对 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@

如果它有趣,我的 package.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);
        });

    });

标签: firebaserequestgoogle-cloud-functions

解决方案


推荐阅读