【发布时间】:2019-12-12 00:18:44
【问题描述】:
我正在尝试部署从 db 事件触发的 Google Cloud 函数触发器,但是当我运行 firebase deploy 时,这些函数没有正确部署,并且我收到一条错误消息 Error: Cannot find module firebase
当我第一次创建项目时,我可以毫无问题地部署功能。自从我上次部署任何东西以来已经有几天了,但现在我的所有功能(不仅仅是我的触发器功能)都遇到了这个问题
我的功能:
exports.deleteNotificationOnUnlike = functions
.region("us-central1")
.firestore.document("likes/{id}")
.onDelete((snapshot) => {
return db
.doc(`/notifications/${snapshot.id}`)
.delete()
.catch((err) => console.error(err));
});
包.json
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"serve": "firebase serve --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "8"
},
"dependencies": {
"busboy": "^0.3.1",
"firebase-admin": "^8.0.0",
"firebase-functions": "^3.1.0"
},
"devDependencies": {
"firebase-functions-test": "^0.1.6"
},
"private": true
}
期待功能部署成功,但收到此错误:
来自 firebase 的错误消息:
Code in file index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'firebase'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/srv/handlers/users.js:5:18)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
{"@type":"type.googleapis.com/google.cloud.audit.AuditLog","status":{"code":3,"message":"INVALID_ARGUMENT"},"authenticationInfo":{"principalEmail":"*********"},"requestMetadata":{"requestAttributes":{},"destinationAttributes":{}},"serviceName":"cloudfunctions.googleapis.com","methodName":"google.cloud.functions.v1.CloudFunctionsService.CreateFunction","resourceName":"projects/*******/locations/us-central1/functions/createNotificationOnComment"}
我看过一些帖子,人们缺少一些模块,需要在函数文件夹中运行 npm i XXX,但我没有看到任何实例说找不到 firebase 模块,而且我不确定与上次成功部署相比有什么变化,或者我可能缺少什么模块。
【问题讨论】:
-
尝试删除
node_modules并再次运行npm install。也尝试使用最新的firebase包。 -
我没有看到您在代码中实际尝试使用 firebase 模块的位置。此外,您的 package.json 甚至没有显示它已安装。最后,您可能根本不应该使用 firebase 模块,因为那是针对前端应用程序的。后端代码,就像您部署到 Cloud Functions 的代码一样,通常只使用 firebase-admin。
标签: firebase firebase-realtime-database google-cloud-firestore google-cloud-functions