繁体   English   中英

为什么当 Node.JS 应用程序与 Firebase 集成时它会崩溃?

[英]Why when a Node.JS app is integrated with Firebase it crashes?

首先,我按照 Express Getting started并开发了一个 Hello World 应用程序。 其次,我遵循了Firebase的 Node.JS 应用指南并配置了Cloud Functions

最终得到以下项目结构。

> bin/
  > www.js
> src/
  > controllers
  > routes
  > more modules
> test/
  > src
> functions/
  > index.js
  > package.json
> app.js
> package.json

functions/index.js的内容是:

const functions = require('firebase-functions');
const app = require('../app');
exports.app = functions.https.onRequest(app);

现在,当尝试部署它时失败并出现下一个错误。

Cannot find module '../app'

根本原因

Cloud Functions 在部署时上传functions/目录的内容,因此其中没有 Node.JS 应用程序。

解决方案

有几种方法可以解决它 一种方法是按照以下步骤在部署之前复制应用程序。

  1. 在 index.js 中更新应用程序的路径。

     -- const app = require('../app'); ++ const app = require('./app');
  2. package.json所有dependencies (不要与devDependencies混淆)必须安装在functions/package.json 例如:如果@google-cloud/firestore被声明为应用程序的依赖项,那么它必须按如下方式安装。

     cd functions && npm i @google-cloud/firestore
  3. 在部署之前将应用程序复制到 Functions 模块中。 这可以通过firebase.json文件通过使用以下块更新它来完成。

     "functions": { "predeploy": "mkdir functions/app && cp -r {app.js,src} functions/app", "postdeploy": "rm -r functions/app" }

现在再次部署将起作用。

firebase deploy # success!

发生的事情是 Node.JS 应用程序在运行部署步骤之前被复制和粘贴。 然后部署不仅将功能上传,还将所需的应用程序上传到云中。 然后,当执行功能时,应用程序也会执行。

影响

如第 2 步所述,应用程序的依赖项也安装在 Functions 模块中。 否则部署将因缺少依赖项而失败。 package.json在本地使用,而functions/package.json在云上使用。 通过遵循这种方法,您需要跟踪依赖项并确保在两个模块中都安装了相同的依赖项。

来源

将 Node.JS 应用程序与 Firebase 集成的 3 种方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM