簡體   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