Firebase 部署错误 - 找不到模块“firebase”

Posted

技术标签:

【中文标题】Firebase 部署错误 - 找不到模块“firebase”【英文标题】:Firebase deploy error - Cannot find module 'firebase' 【发布时间】: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。 【参考方案1】:

确保从函数目录安装包,而不是项目目录。当我在项目目录中意外安装软件包时,我多次收到此错误,它在本地运行良好,但在部署期间创建了此类错误。所以,转到函数并从那里安装

cd functions
npm install [your package]

然后它通常可以正常工作

【讨论】:

【参考方案2】:

尝试更新 firebase npm 包,我的问题是使用 npm install -s firebase 解决的。

-保持安全!

【讨论】:

【参考方案3】:

想出了解决办法。我没有在functions文件夹中安装firebase模块,而是将它包含在functions的父文件夹中。我进入函数运行npm install --save firebase,部署成功。

【讨论】:

以上是关于Firebase 部署错误 - 找不到模块“firebase”的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云平台:“找不到模块 firebase-admin”

Firebase 部署 - 找不到本地依赖项的模块

使用 Typescript 创建 Firebase 云函数时出现“找不到名称‘ServiceWorkerRegistration’”错误

致命错误:找不到模块“firebase_core”

颤振:致命错误:找不到模块“firebase_analytics”

致命错误:找不到模块“firebase_auth”@import firebase_auth