【问题标题】:Firebase hosting and cloud functions don't work with formidable: incomingForm is not a constructorFirebase 托管和云功能不适用于强大:incomingForm 不是构造函数
【发布时间】:2018-10-08 17:14:00
【问题描述】:

我使用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 ErrorTypeError: formidable.incomingForm is not a constructor 在发布我的表单后。

formidable 可以很好地与我机器上的普通节点服务器和 Express 服务器配合使用。我已经尝试过firebase node 8 engine 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 上寻找解决方案

【问题讨论】:

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


【解决方案1】:

Formidable doesn't work with Cloud Functions,原因与multer doesn't work 相同。请改用 busboy。

【讨论】:

    【解决方案2】:

    Formidable-serverless 是一个不错的选择。它适用于 Firebase Cloud Functions。

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2018-08-07
      • 2018-08-19
      相关资源
      最近更新 更多