google-api-nodejs-client icon indicating copy to clipboard operation
google-api-nodejs-client copied to clipboard

TypeError [ERR_INVALID_ARG_TYPE]: The "paths[0]" argument must be of type string. Received an instance of Object

Open mohamed-abd-elkahlk opened this issue 1 year ago • 2 comments

hi i got this error "TypeError [ERR_INVALID_ARG_TYPE]: The "paths[0]" argument must be of type string. Received an instance of Object" every time i try to upload a file to my drive account and here is the code

"use server";
import { google } from "googleapis";
import * as fs from "fs";
import { join } from "path";
export async function addFile(e: FormData) {
  const file: File | null = e.get("file") as unknown as File;

  const bytes = await file?.arrayBuffer();
  const buffer = Buffer.from(bytes);

  const path = join("/", "/tmp", file.name.trim());
  fs.writeFileSync(path, buffer);

  const keyFile = await JSON.parse(
    fs.readFileSync(process.cwd() + `/src/app/key.json`, "utf-8")
  );

  const auth = new google.auth.GoogleAuth({
    keyFile,
    scopes: ["https://www.googleapis.com/auth/drive"],
  });
  const drive = google.drive({
    version: "v3",
    auth,
  });

  const response = () => {
    return new Promise((resolve, reject) => {
      drive.files.create(
        {
          requestBody: {
            name: file.name,
            parents: ["1TebOIirZf_P9xb2Vc2fAVhdMrTU_rN-U"],
          },
          media: {
            body: fs.createReadStream(path),
            mimeType: file.type.toString(),
          },
          fields: "id",
        },
        function (err, file) {
          if (err) {
            reject(err);
          }
          resolve(file);
        }
      );
    });
  };

  await response().catch((err) => console.log(err));
}

so could any one help with that or have a tip for solve this problem i use next.js 14.1.0 as a javascript frame work node with version 20.9.0

mohamed-abd-elkahlk avatar Feb 26 '24 12:02 mohamed-abd-elkahlk

I'm facing this same issue.

Is there currently a way to upload files with Next.js 14+ or do we need to wait for this to be fixed? Any timeline for the fix? Thanks!

tumetus avatar Apr 08 '24 15:04 tumetus

Hi, so recently I also having this kind of issue while uploading my images to the Google Cloud storage with the help of multer and storing it to memory storage before uploading to the cloud.

I figured out that the keyFile that we are trying to store is a json object, but the keyFile attribute only wants a path to the key.json image image

I hope this gonna solves your issues. I'm sorry because my English is not that good :)

KenzieFu avatar May 07 '24 10:05 KenzieFu