Firebase托管和云功能不适用于强大功能:incomingForm不是构造函数

时间:2018-10-08 17:14:01

标签: firebase express google-cloud-functions firebase-hosting formidable

我使用express处理发帖请求并解析上传的文件很困难:

import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
import * as formidable from "formidable";
import * as util from "util";
import * as express from "express";

admin.initializeApp();
const app = express();

app.post("/image", (req, res) => {
  const form = new formidable.incomingForm();
  form.parse(req, async function(err, fields, files) {
    res.writeHead(200, { "content-type": "text/plain" });
    res.write("received upload:\n\n");
    res.end(util.inspect({ fields: fields, files: files }));
  });
});

export const api = functions.https.onRequest(app);

我已经在firebase.json中重写了源代码和函数。部署和投放服务时,我一直收到错误Internal Server Error:发布表单后TypeError: formidable.incomingForm is not a constructor

formidable与我的计算机上的普通节点服务器和Express服务器一起很好地工作。我已经尝试过Firebase节点8引擎beta,使用JS代替TS,但仍然无法正常工作。如何使用Firebase托管和云功能进行强大的工作?请帮忙。

这是我简单的客户表格:

<form action="http://myfirebaseserver/image" method="post" encType="multipart/form-data">
  <input type="file" name="myImage" />
  <button type="submit">Upload</button>
</form>

目前,我正在尝试busboy替代,但仍在formidable上寻找解决方案

2 个答案:

答案 0 :(得分:3)

Formidable-serverless是一个不错的选择。它可以与Firebase Cloud Functions一起使用。

答案 1 :(得分:1)