未定义Cloud Firebase功能错误承诺

时间:2019-03-04 16:36:24

标签: javascript google-cloud-functions

我之前有两篇文章试图解决我的问题,并决定将所有现有代码排除在外。

我无法兑现任何承诺。因此,我正在尝试重复道格·史蒂文森(Doug Stevenson)的YouTube视频“使用Cloud Functions中的HTTP触发器学习Fireman承诺(Pt.1)-Firecast”中的示例。根据以下错误,我质疑我的环境是否是我无法获得保证正常工作的原因。

这些消息均未出现在控制台日志中(根据返回的消息,这对我来说并不奇怪。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const sendgrid = require('@sendgrid/mail');

admin.initializeApp();
admin.firestore().settings({
  timestampsInSnapshots: true
});
    exports.getMatchesNew = functions.https.onRequest((request, response) => {
      console.log("In On Call", request);
      admin.firestore().doc('city/seattle').get();

      promise.then(snapshot => {
          const data = snapshot.data();
          console.log("data: ", data);
          response.send(data);
      })
      .catch(error => {
        // Handle the error
        console.log(error);
        response.status(400).send(error);
      });
    });

,尝试在本地测试此功能时收到此错误 使用 http://localhost:5000/wsos-base/us-central1/getMatchesNew

堆栈“ ReferenceError:未定义promise \ n,位于exports.getMatchesNew.functions.https.onRequest(C:\ WSOS-BASE \ nitrofreddo-master \ functions \ index.js:317: 3)\ n在cloudFunction(C:\ WSOS-BASE \ nitrofreddo-master \ functions \ node_modules \ firebase-functions \ lib \ providers \ https.js:57:9)\ n在app.use(C:\ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ @ google-cloud \ functions-emulator \ src \ supervisor \ worker.js:151:11)\ n在Layer.handle [as handle_request](C: \ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ express \ lib \ router \ layer.js:95:5)\ n位于trim_prefix(C:\ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ express \ lib \ router \ index.js:317:13)\ n在C:\ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ express \ lib \ router \ index.js:284:7 \ n在Function.process_params(C:\ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ express \ lib \ router \ i ndex.js:335:12)\ n接下来(C:\ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ express \ lib \ router \ index.js:275:10)\ n在app.use(C:\ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ @ google-cloud \ functions-emulator \ src \ supervisor \ worker.js:123:7)\ n Layer.handle [作为handle_request](C:\ Users \ miker \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ node_modules \ express \ lib \ router \ layer.js:95:5)“ 消息“未定义承诺” 名称为“ ReferenceError”

我没有以前的开发人员的相关信息。设置环境时,我下载了最新的Node.JS,但这也许是不正确的。这是Node.Js版本冲突吗?或Firebase版本冲突?还是???

请参阅我以前的帖子This shows a cloud function that is working, except for what I believe are dropped promises when trying to get user information for each mentee id

2 个答案:

答案 0 :(得分:1)

错误消息告诉您您从未定义变量promise

代替此:

admin.firestore().doc('city/seattle').get();

也许您是想这样说的:

const promise = admin.firestore().doc('city/seattle').get();

答案 1 :(得分:0)

我听不懂,但是重启机器后,我的功能正常了。很遗憾,但这对于某些技术问题仍然是可行的解决方案。 这是Doug Stevenson引用的示例中的函数(没有我未定义的“ promise”对象)。我觉得我现在处在一个好地方,并且只要我能发挥作用,就能够兑现这些诺言。感谢Doug,以及所有想回答但无法在Doug之前到达那里的人! ;-)