googleapis / nodejs-local-auth

A standalone library for receiving Google OAuth tokens
Apache License 2.0
35 stars 15 forks source link

Error module not found , key.json #188

Open isaacdarcilla opened 8 months ago

isaacdarcilla commented 8 months ago

Need help. I am trying to use App router here using NextJS.

Error says Cannot find module

error Error: Cannot find module 'C:\path\to\project\packages\frontend\public\google\client.json' at webpackEmptyContext (C:\path\to\project\packages\frontend\.next\server\app\api\captions\route.js:22:10)

Now, the client.json file is placed in public/google directory and I'm trying to access it in api route.ts

This is the code in route.ts

// app/api/captions/route.ts

import { google } from "googleapis";
import { authenticate } from "@google-cloud/local-auth";
import path from "path";

export async function GET() {

  const auth = await authenticate({
    keyfilePath: path.resolve("public", "google", "client.json"),
    scopes: ["https://www.googleapis.com/auth/youtube"],
  });

  google.options({ auth });

  console.log(auth);
}
nayyer28 commented 7 months ago

I am facing the same issue. Works fine in js but not ts

isaacdarcilla commented 7 months ago

I am facing the same issue. Works fine in js but not ts

Was able to make this work by using google api client directly.

So instead of that, I did implement it like this,

import { google } from "googleapis";
import path from "path";

export async function GET(request: NextRequest) {

    const auth = new google.auth.GoogleAuth({
      keyFile: path.resolve("public", "google", "client.json"),
      scopes: [
        "https://www.googleapis.com/auth/youtube",
      ],
    });

    google.options({ auth: auth });

    console.log(auth);
 }
deltaepsilon commented 6 months ago

Can confirm. This breaks in a fresh TS project.

deltaepsilon commented 6 months ago

I got around it by using the Page Router. App Router will not work with this package.