firebase - 定义简单函数时谷歌云函数错误
问题描述
您好我正在尝试使用firebase托管部署一个简单的功能,当我这样做时,我的firebase日志中出现以下错误:
TypeError: Cannot set property 'content-type' of undefined
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:365:22)
at ServerResponse.header (/user_code/node_modules/express/lib/response.js:767:10)
at ServerResponse.contentType (/user_code/node_modules/express/lib/response.js:595:15)
at ServerResponse.send (/user_code/node_modules/express/lib/response.js:145:14)
at app.get (/user_code/lib/index.js:10:22)
at Layer.handle [as handle_request] (/user_code/node_modules/express/lib/router/layer.js:95:5)
at next (/user_code/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/user_code/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/user_code/node_modules/express/lib/router/layer.js:95:5)
at /user_code/node_modules/express/lib/router/index.js:281:22
鉴于我刚开始使用 firebase 托管,我不知道是什么原因造成的;这是我的文件:
src > index.ts:
import * as functions from 'firebase-functions';
import * as express from 'express';
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
const app = express();
export const getTime = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
firebase.json:
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites":[{
"source": "/timestamp",
"function": "getTime"
}]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
包.json:
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"main": "lib/index.js",
"dependencies": {
"express": "^4.16.4",
"firebase-admin": "~6.0.0",
"firebase-functions": "^2.1.0"
},
"devDependencies": {
"tslint": "^5.12.0",
"typescript": "^3.2.2"
},
"private": true
}
解决方案
正如您在这里看到的,您的 index.ts 应该是:
import * as functions from 'firebase-functions';
import * as express from 'express';
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
const app = express();
app.get("*", (request, response) => {
response.send("Hello from Firebase!");
});
export const getTime = functions.https.onRequest(app);
推荐阅读
- c# - Asp.net core 3.0 在发布或构建时发布视图文件 (.cshtml)
- sql - 这段代码是什么意思..[select @a:=password(?)]
- javascript - 如何在从另一个页面加载的模式中运行脚本?
- python-3.x - pyaudio 在录制声音时给出空输出文件 [MacOS Mojave 10.14.6]
- c - 使用用户输入 ('+' / '-') 进行数学运算的 C 控制台程序不起作用
- github - 为 GitHub 发布重用 Azure DevOps 管道
- python - 与 luigi docker 服务器共享卷
- php - Php 5.6 Code Igniter 3.1.x 会话在重定向到不同的 Rest 控制器时丢失
- scala - Play 2.7.x:ProvisionException:无法提供具有循环依赖关系的 play.api.Application
- python - 未检测到文件图像