Cloudinary 错误:缺少必需的参数 - 文件。 Prisma/MongoDB/Insomnia

问题描述 投票:0回答:1

我正在构建我的第一个全栈 Twitter 克隆应用程序,同时遵循教程,到目前为止我面临很多错误,但到目前为止我自己能够修复它们。然而,在这方面我需要一些帮助,因为这对我来说没有多大意义。

我目前正在尝试构建推文表单(从相应的作者/用户获取推文)并显示它们。但是,我在使用 Insomnia 进行测试时收到以下错误: enter image description here

我的index.post.js 文件(用于发布推文):

import formidable from "formidable";
import { createTweet } from "~/server/db/tweets";
import { tweetTransformer } from "~/server/transformers/tweet.js";
import { createMediaFile } from "../../../db/mediaFiles.js";
import { uploadToCloudinary } from "../../../utils/cloudinary.js";

export default defineEventHandler(async (event) => {
  const form = formidable({});

  const response = await new Promise((resolve, reject) => {
    form.parse(event.node.req, (err, fields, files) => {
      if (err) {
        reject(err);
      }
      resolve({ fields, files });
    });
  });

  const { fields, files } = response;

  const userId = event.context?.auth?.user?.id;

  const tweetData = {
    text: String(fields.text),
    authorId: userId,
  };

  const tweet = await createTweet(tweetData);

  const filePromises = Object.keys(files).map(async (key) => {
    const file = files[key];

    const response = await uploadToCloudinary(file.filepath);

    console.log(response);

    return createMediaFile({
      url: "",
      providerPublicId: "random_id",
      userId: userId,
      tweetId: tweet.id,
    });
  });

  await Promise.all(filePromises);

  return {
    // tweet: tweetTransformer(tweet),
    files,
  };
});

我的 tweets.js 文件:

import { prisma } from ".";

export const createTweet = (tweetData) => {
  return prisma.tweet.create({
    data: tweetData,
  });
};

我的cloudinary.js文件:

import { v2 as _cloudinary } from "cloudinary";

const cloudinary = () => {
  const config = useRuntimeConfig();

  _cloudinary.config({
    cloud_name: config.cloudinaryCloudName,
    api_key: config.cloudinaryApiKey,
    api_secret: config.cloudinaryApiSecret,
  });

  return _cloudinary;
};

export const uploadToCloudinary = (image) => {
  return new Promise((resolve, reject) => {
    console.log(image);
    cloudinary().uploader.upload(image, (error, data) => {
      if (error) {
        reject(error);
      }
      resolve(data);
    });
  });
};

可能cloudinary文件的配置有问题?任何帮助将不胜感激!

尝试从chatGPT获取帮助,已经看到几个论坛有完全相同的问题并尝试了他们的解决方案,但到目前为止还没有运气。也许我的错误更具体?

mongodb nuxt.js prisma cloudinary insomnia
1个回答
0
投票

您遇到的错误消息与使用 Cloudinary 时缺少必需参数有关。以下是需要回顾的要点:

  1. 确保配置参数(cloud_name、api_key 和 api_secret)设置正确。
  2. 确保图像变量包含要上传的图像的正确路径或 URL。如果是本地文件,请确保路径有效且可访问。
  3. console.log(image)语句有助于调试。验证它是否显示正确的图像路径或 URL。
© www.soinside.com 2019 - 2024. All rights reserved.