Имею функцию загрузки с использованием busboy с облачными функциями Firebase. Я получаю эту ошибку.
Доступ к XMLHttpRequest по URL-адресу «облачных функций firebase» из источника «localhost» был заблокирован политикой CORS: НетЗаголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе.
У меня уже есть cors:
app.use(cors());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers');
res.setHeader('Cache-Control', 'no-cache');
next();
});
Я не уверен, что это потому, что яя все еще использую бесплатную версию ... потому что мой простой GET API работает ..
Я также получил эту ошибку, но я не уверен, что это потому, что CORS блокирует загрузку изображения ..
TypeError: Невозможно прочитать свойство 'file' с нулевым значением
вот мой код:
const fs = require("fs");
const os = require("os");
const path = require("path");
const Busboy = require("busboy");
const busboy = new Busboy({ headers: req.headers });
let uploadData = null;
let origFileName;
busboy.on("file", (fieldname, file, filename, encoding, mimetype) => {
origFileName = filename
const filepath = path.join(os.tmpdir(), filename);
uploadData = { file: filepath, type: mimetype };
file.pipe(fs.createWriteStream(filepath));
});
busboy.on("finish", () => {
const bucket = gcs.bucket(bucketName);
let uuid = UUID();
bucket
.upload(uploadData.file, {
uploadType: "media",
metadata: {
metadata: {
contentType: uploadData.type,
firebaseStorageDownloadTokens: uuid
}
},
Когда я использую почтальон, ошибки не возникает.
любая помощь будет оценена ..