我之前有两篇文章试图解决我的问题,并决定将所有现有代码排除在外。
我无法兑现任何承诺。因此,我正在尝试重复道格·史蒂文森(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版本冲突?还是???
答案 0 :(得分:1)
错误消息告诉您您从未定义变量promise
。
代替此:
admin.firestore().doc('city/seattle').get();
也许您是想这样说的:
const promise = admin.firestore().doc('city/seattle').get();
答案 1 :(得分:0)
我听不懂,但是重启机器后,我的功能正常了。很遗憾,但这对于某些技术问题仍然是可行的解决方案。 这是Doug Stevenson引用的示例中的函数(没有我未定义的“ promise”对象)。我觉得我现在处在一个好地方,并且只要我能发挥作用,就能够兑现这些诺言。感谢Doug,以及所有想回答但无法在Doug之前到达那里的人! ;-)