当我运行命令firebase deploy时,我收到此错误:
我正在部署功能
我的功能:确保启用必要的API ...
i runtimeconfig:确保启用必要的API ...
✔timetimeconfig:启用所有必需的API
✔功能:启用所有必需的API
我的功能:准备上传的功能目录......
我的功能:用于上传的打包功能(4.04 KB)
✔功能:功能文件夹上传成功
我开始发布过程(可能需要几分钟)...
我的功能:创建函数followerNotification ...
⚠功能:无法创建函数followerNotification
⚠功能:HTTP错误:400,请求有错误
⚠功能:1个功能无法部署。
功能部署有错误。要继续部署其他功能(例如>数据库),请运行: firebase deploy --except functions
错误:功能未正确部署。
遇到麻烦?尝试使用firebase deploy --help
其他一切都没有问题。只有当我尝试使用Firebase Firestore创建内容时。
答案 0 :(得分:59)
这也发生在我身上,然后我意识到在第二级,firestore只允许文档而不是集合。
我试图听这条路:
/collection/document/{wildcard}
您可以执行类似
的操作/collection/{wildcard}
或
/collection/document/collection/{wildcard}
答案 1 :(得分:7)
我也有这个问题。在我的情况下,这是因为我的触发路径在文档路径中有一个尾部斜杠。
如此改变:
[dependencies]
dep_b = { version = "0.1.0", path = "../dep_b", default-features = false }
要:
functions.firestore
.document('some_path/{pushId}/')
为我修好了。这似乎是由各种各样的问题引起的,并且firebase cli没有很好地解释原因。
答案 2 :(得分:4)
问题是你只引用了一个集合,而不是像以下那样的文档:
exports.myFunctionName = functions.firestore
.document('users/marie').onWrite((event) => {
// ... Your code here
});
您需要引用文档,如:
exports.myFunctionName = functions.firestore
.document('users/marie').onWrite((event) => {
// ... Your code here
});
您还可以使用通配符,如:
exports.myFunctionName = functions.firestore
.document('users/{userId}').onWrite((event) => {
// ... Your code here
});
这里描述:https://firebase.google.com/docs/functions/firestore-events
希望我能帮忙
答案 3 :(得分:1)
问题可能是由函数名称的长度引起的。
所以,如果名称是:
myFunctionsFromWorksWithCustumersTiggersTests
更改较短的名称,例如:
WorkWithCustumers
我希望我帮助过。
答案 4 :(得分:1)
我也遇到了同样的错误,直到我将函数名从更改为
create_template _
到
create_new_template
函数名末尾的'_'(下划线)可能导致此错误。
答案 5 :(得分:1)
如果仍然有人遇到这种情况,就我而言,解决方案正在运行npm install -g firebase-tools
来更新cli并添加
"engines": {
"node": "8"
}
到package.json
答案 6 :(得分:1)
对我来说,所有答案都没有帮助我。最后,我从Google获得了一系列步骤来找出问题所在。如果您运行:
firebase --debug --only functions deploy
它将给出更详细的错误消息,对于我来说是这样:
HTTP RESPONSE BODY <?xml version='1.0' encoding='UTF-8'?><Error><Code>EntityTooLarge</Code><Message>Your proposed upload is larger than the maximum object size specified in your Policy Document.</Message><Details>Content-length exceeds upper bound on range</Details></Error>
答案 7 :(得分:0)
我遇到同样错误消息的问题是Cloud Functions&#39; pubsub似乎不支持名称以数字字符开头的主题。
答案 8 :(得分:0)
尝试发布以数字字符开头的侦听Cloud pub / sub的函数时,我遇到了相同的错误。
C:\inetpub\Corporate Webiste\
只需更改名称即可解决:
exports.nightly_pruning = functions.pubsub.topic('24hr-tick').onPublish((event) => {
...
});
(感谢上面的尼古拉·黑格尔斯塔德。我无话可说。)
答案 9 :(得分:0)
只想指出一点,即是linter会拒绝监听器声明上的换行符,即:
exporst.myFunc = functions.firestore
.document('collection/{uid}')
.onEvent(...)
短毛绒没有多大帮助,并且文档也没有照常进行覆盖
答案 10 :(得分:0)
由于在导出函数名称开头加了下划线,所以我遇到了这种情况。您可以通过以下方法自己进行测试:
exports._someLongNameWithUnderscore= functions.auth.user().onCreate(user => {
return true;
});
exports.someLongNameWithoutUnderscore= functions.auth.user().onCreate(user => {
return true;
});
exports.shortName= functions.auth.user().onCreate(user => {
return true;
});
在下划线开头或下划线的那个将失败,并显示HTTP:400
,而其他将展开。
答案 11 :(得分:0)
如果您使用错误的Node版本,也会发生这种情况。在使用函数时,将节点版本设置为8.x后,我才刚刚体验到这一点。切换回v10.x,问题消失了。
答案 12 :(得分:0)
好的,这就是您需要查看的内容。
自从有了
exports.yourFunctionName = functions.firestore.document
您需要查看的是.document
您的路径必须指向文档而不是集合。
所以这将不起作用:
/level1/{level1Id}/level2
<-它指向一个集合
此将起作用:
/level1/{level1Id}/level2/{level2Id}
云功能将在文档具有操作
时查找希望这对任何人都有帮助