首页 > 解决方案 > 使用谷歌云功能部署 api

问题描述

我为我的 Angular 应用程序制作了一个 api,现在我想部署它。但是,我不能要求我的 server.js(这是应用程序的入口点,声明了所有路由等),文件来自函数文件夹。我该怎么做?

我试图将我之前的所有代码移动到函数文件夹中,但该文件夹不起作用(即使在删除并重新安装节点模块并更改了 firebase.json 的入口点之后)。我将后端从 Angular 项目移到了它自己的单独文件夹中。这也不起作用。

在我的函数 index.js 中:

const functions = require('firebase-functions');
const app = require('../server.js');

exports.api = functions.https.onRequest(app);

server.js 位于函数文件夹之外。

期望能够部署我的功能,而不是得到

Detailed stack trace: Error: Cannot find module '../server.js'.

编辑:

我的文件夹结构如下所示:

|-- database
|   |-- database.js
|   |-- db_config.js
|   `-- models
|       `-- User.js
|-- firebase.json
|-- firestore.indexes.json
|-- firestore.rules
|-- functions
|   |-- node_modules  
|   |-- index.js
|   |-- package-lock.json
|   `-- package.json
|-- package-lock.json
|-- package.json
|-- node_modules
|-- routes
|   `-- api.js
|-- server.js

谢谢。

标签: javascriptnode.jsexpressgoogle-cloud-functions

解决方案


您可以为 Cloud Functions 的依赖项包含本地 Node.js 模块。您可以通过使用 file: 前缀在 package.json 中声明您的模块来实现这一点,如链接中所述。

此本地模块的代码不应位于您的 node_modules 文件夹中。您可以简单地将其存储在函数目录的根目录中。


推荐阅读