javascript - 使用谷歌云功能部署 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
谢谢。
解决方案
您可以为 Cloud Functions 的依赖项包含本地 Node.js 模块。您可以通过使用 file: 前缀在 package.json 中声明您的模块来实现这一点,如链接中所述。
此本地模块的代码不应位于您的 node_modules 文件夹中。您可以简单地将其存储在函数目录的根目录中。
推荐阅读
- flutter - 在一行内对齐 FlatButton
- kubernetes - Kube 控制器管理器 CrashLoopBackOff
- regex - 仅使用 REGEX 检查一个短语是否在文档中至少出现 N 次
- xml - 使用 XPath 查询读取和选择 XML 标记
- javascript - 试图过滤掉元素Javascript
- mysql - mysql中的更新触发器
- python - 为 Django Rest Framework 制作 models.py 主键和外键
- sql - 我正在尝试使用 python sql 访问存储在雪花表中的数据。下面是我想访问的下面给出的列
- python - 尝试将分层字符串结构放入 dict
- mips - MIPS/QtSpim Register 1 是为汇编错误保留的,一个非常简单的程序