Firebase 函数:koa.js 服务器如何部署
Firebase functions: koa.js server how to deploy
我已经有一个用 MERN 堆栈编写的应用程序,带有 koa 服务器准备构建版本。我的主节点文件通过 node server.js
命令 运行 来启动整个应用程序看起来像 this.
在每个教程中,我看到我需要在编码的开头添加 functions.https.request
等(或者至少假设这样做)。
我如何才能像在 heroku 上一样在 firebase 上托管我的应用程序 - 整个服务器端?
您无法在 Cloud Functions 上部署和 运行 任意节点应用程序。您必须使用产品定义的不同类型的触发器。
查看列表Cloud Functions for Firebase main page。
- Cloud Firestore Triggers
- Realtime Database Triggers
- Firebase Authentication Triggers
- Google Analytics for Firebase Triggers
- Crashlytics Triggers
- Cloud Storage Triggers
- Cloud Pub/Sub Triggers
- HTTP Triggers
您可以 运行 使用 firebase 托管的 express 应用程序通过 firebase 函数提供动态内容。但是,您目前不能使用 Koa.js。 functions.https.onRequest
要求您传递 HTTP 请求处理程序或从 express()
返回的快速应用程序。
这是来自 Firebase 的有关从函数提供动态内容的相关文章。
https://firebase.google.com/docs/hosting/functions
这是来自 Firebase 的关于使用 express 的视频教程。
https://www.youtube.com/watch?v=LOeioOKUKI8
可以使用 firebase 函数托管 Koa
应用程序,我在谷歌搜索和分析后发现了它。
这是来自 my project 的一段代码,现在使用 firebase 函数托管:
const Koa = require('koa');
const app = new Koa();
// ... routes code here ...
// This is just for running Koa and testing on the local machine
const server = app.listen(config.port, () => {
console.log(`HITMers-server is running on port ${config.port}`);
});
module.exports = server;
// This export is for Firebase functions
exports.api = functions.https.onRequest(app.callback());
您可以查看the docs and tutorial video了解更多信息。
顺便说一下,这是 another example to deploy Koa to now.sh
版本 2。
您实际上可以完全跳过 listen 调用,并使用 app.callback()
。
这似乎比监听一个从未真正被命中的随机端口更有意义。
const functions = require('firebase-functions');
const app = new Koa();
... // set up your koa app however you normally would
app.use(router.routes());
module.exports.api = functions.https.onRequest(app.callback());
任何正在寻找 koa
Google Cloud Functions
的人,这是我在 typescript
中的工作版本
import Koa from 'koa';
import Router from 'koa-router';
import type { HttpFunction } from '@google-cloud/functions-framework/build/src/functions';
const app = new Koa();
const port = process.env.PORT || 3001;
const router = new Router();
router.get('/', async (ctx) => {
ctx.body = 'Hello World!';
});
app.use(router.routes());
// For development on local
if (!isCloudFunctions()) {
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
}
export const helloWorldApi: HttpFunction = app.callback();
function isCloudFunctions(){
return !!process.env.FUNCTION_SIGNATURE_TYPE;
}
部署:
gcloud functions deploy test-koa-function --entry-point=helloWorldApi --runtime nodejs16 --trigger-http --allow-unauthenticated
我已经有一个用 MERN 堆栈编写的应用程序,带有 koa 服务器准备构建版本。我的主节点文件通过 node server.js
命令 运行 来启动整个应用程序看起来像 this.
在每个教程中,我看到我需要在编码的开头添加 functions.https.request
等(或者至少假设这样做)。
我如何才能像在 heroku 上一样在 firebase 上托管我的应用程序 - 整个服务器端?
您无法在 Cloud Functions 上部署和 运行 任意节点应用程序。您必须使用产品定义的不同类型的触发器。
查看列表Cloud Functions for Firebase main page。
- Cloud Firestore Triggers
- Realtime Database Triggers
- Firebase Authentication Triggers
- Google Analytics for Firebase Triggers
- Crashlytics Triggers
- Cloud Storage Triggers
- Cloud Pub/Sub Triggers
- HTTP Triggers
您可以 运行 使用 firebase 托管的 express 应用程序通过 firebase 函数提供动态内容。但是,您目前不能使用 Koa.js。 functions.https.onRequest
要求您传递 HTTP 请求处理程序或从 express()
返回的快速应用程序。
这是来自 Firebase 的有关从函数提供动态内容的相关文章。 https://firebase.google.com/docs/hosting/functions
这是来自 Firebase 的关于使用 express 的视频教程。 https://www.youtube.com/watch?v=LOeioOKUKI8
可以使用 firebase 函数托管 Koa
应用程序,我在谷歌搜索和分析后发现了它。
这是来自 my project 的一段代码,现在使用 firebase 函数托管:
const Koa = require('koa');
const app = new Koa();
// ... routes code here ...
// This is just for running Koa and testing on the local machine
const server = app.listen(config.port, () => {
console.log(`HITMers-server is running on port ${config.port}`);
});
module.exports = server;
// This export is for Firebase functions
exports.api = functions.https.onRequest(app.callback());
您可以查看the docs and tutorial video了解更多信息。
顺便说一下,这是 another example to deploy Koa to now.sh
版本 2。
您实际上可以完全跳过 listen 调用,并使用 app.callback()
。
这似乎比监听一个从未真正被命中的随机端口更有意义。
const functions = require('firebase-functions');
const app = new Koa();
... // set up your koa app however you normally would
app.use(router.routes());
module.exports.api = functions.https.onRequest(app.callback());
任何正在寻找 koa
Google Cloud Functions
的人,这是我在 typescript
import Koa from 'koa';
import Router from 'koa-router';
import type { HttpFunction } from '@google-cloud/functions-framework/build/src/functions';
const app = new Koa();
const port = process.env.PORT || 3001;
const router = new Router();
router.get('/', async (ctx) => {
ctx.body = 'Hello World!';
});
app.use(router.routes());
// For development on local
if (!isCloudFunctions()) {
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
}
export const helloWorldApi: HttpFunction = app.callback();
function isCloudFunctions(){
return !!process.env.FUNCTION_SIGNATURE_TYPE;
}
部署:
gcloud functions deploy test-koa-function --entry-point=helloWorldApi --runtime nodejs16 --trigger-http --allow-unauthenticated