lucia-auth / lucia

Authentication, simple and clean
https://lucia-auth.com
MIT License
9.46k stars 485 forks source link

[Bug]: Cannot read properties of undefined (reading 'validate') when running Astro username/password example #1308

Closed nbbaier closed 10 months ago

nbbaier commented 10 months ago

Package

lucia-auth

Describe the bug

Ran into the error Cannot read properties of undefined (reading 'validate') when running the Astro username and password example repo. Here's the stracktrace

TypeError: Cannot read properties of undefined (reading 'validate')
    at /Users/nicholasbaier/ardent-ascension/src/pages/index.astro:4:41
    at index (/Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/runtime/server/astro-component.js:18:12)
    at callComponentAsTemplateResultOrResponse (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/runtime/server/render/astro/render.js:85:31)
    at renderToReadableStream (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/runtime/server/render/astro/render.js:35:32)
    at renderPage (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/runtime/server/render/page.js:29:18)
    at renderPage (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/core/render/core.js:56:26)
    at #tryRenderRoute (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/core/pipeline.js:115:24)
    at DevPipeline.renderRoute (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/core/pipeline.js:58:46)
    at handleRoute (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/vite-plugin-astro-server/route.js:229:33)
    at async run (file:///Users/nicholasbaier/ardent-ascension/node_modules/astro/dist/vite-plugin-astro-server/request.js:53:14)

I have made no changes to the repo and was following the guide here

Steps to reproduce

  1. npx degit lucia-auth/examples/astro/username-and-password
  2. cd
  3. bun install
  4. bun run dev
  5. Open base route

This error also occurs when running the repo on Stackblitz.

pilcrowonpaper commented 10 months ago

Have you set up the middleware?

nbbaier commented 10 months ago

This middleware is already present in the repo (and is identical except for the import to the one described here)

import { auth } from "./lib/lucia";

import type { MiddlewareResponseHandler } from "astro";

export const onRequest: MiddlewareResponseHandler = async (context, next) => {
  context.locals.auth = auth.handleRequest(context);
  return await next();
};

Is there a change that needs to be made there?

pilcrowonpaper commented 10 months ago

Can you check if the middleware runs in the first place?

nbbaier commented 10 months ago

Can you check if the middleware runs in the first place?

This is the complete set of traces/ errors I'm getting, it looks like there's trouble with import (I just did a fresh install of the template to make sure I was recreating the initial bug correctly)

4:50:09 PM [vite] Error when evaluating SSR module /src/lib/lucia.ts:
|- Error: Could not locate the bindings file. Tried:
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/out/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/out/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/default/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/compiled/20.10.0/darwin/arm64/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/release/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/debug/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/default/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/binding/node-v115-darwin-arm64/better_sqlite3.node
    at bindings (/Users/nicholasbaier/absent-asteroid/node_modules/bindings/bindings.js:126:9)
    at new Database (/Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/database.js:48:64)
    at Proxy.Database (/Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/database.js:11:10)
    at eval (/Users/nicholasbaier/absent-asteroid/src/lib/lucia.ts:13:41)
    at async instantiateModule (file:///Users/nicholasbaier/absent-asteroid/node_modules/vite/dist/node/chunks/dep-68d1a114.js:56052:9)

4:50:09 PM [vite] Error when evaluating SSR module /src/middleware.ts: failed to import "/src/lib/lucia.ts"
|- Error: Could not locate the bindings file. Tried:
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/out/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/out/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/default/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/compiled/20.10.0/darwin/arm64/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/release/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/debug/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/default/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/binding/node-v115-darwin-arm64/better_sqlite3.node
    at bindings (/Users/nicholasbaier/absent-asteroid/node_modules/bindings/bindings.js:126:9)
    at new Database (/Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/database.js:48:64)
    at Proxy.Database (/Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/database.js:11:10)
    at eval (/Users/nicholasbaier/absent-asteroid/src/lib/lucia.ts:13:41)
    at async instantiateModule (file:///Users/nicholasbaier/absent-asteroid/node_modules/vite/dist/node/chunks/dep-68d1a114.js:56052:9)

4:50:09 PM [vite] Error when evaluating SSR module astro-internal:middleware: failed to import "/src/middleware.ts"
|- Error: Could not locate the bindings file. Tried:
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/out/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/Debug/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/out/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/Release/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/build/default/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/compiled/20.10.0/darwin/arm64/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/release/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/debug/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/addon-build/default/install-root/better_sqlite3.node
 → /Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/binding/node-v115-darwin-arm64/better_sqlite3.node
    at bindings (/Users/nicholasbaier/absent-asteroid/node_modules/bindings/bindings.js:126:9)
    at new Database (/Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/database.js:48:64)
    at Proxy.Database (/Users/nicholasbaier/absent-asteroid/node_modules/better-sqlite3/lib/database.js:11:10)
    at eval (/Users/nicholasbaier/absent-asteroid/src/lib/lucia.ts:13:41)
    at async instantiateModule (file:///Users/nicholasbaier/absent-asteroid/node_modules/vite/dist/node/chunks/dep-68d1a114.js:56052:9)

 error   Cannot read properties of undefined (reading 'validate')
  File:
    /Users/nicholasbaier/absent-asteroid/src/pages/index.astro:4:41
  Code:
    > 4 | const session = await Astro.locals.auth.validate();
        |                                         ^
      5 | if (!session) return Astro.redirect("/login", 302);
      6 | ---
  Stacktrace:
TypeError: Cannot read properties of undefined (reading 'validate')
    at /Users/nicholasbaier/absent-asteroid/src/pages/index.astro:4:41
    at index (/Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/runtime/server/astro-component.js:18:12)
    at callComponentAsTemplateResultOrResponse (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/runtime/server/render/astro/render.js:85:31)
    at renderToReadableStream (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/runtime/server/render/astro/render.js:35:32)
    at renderPage (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/runtime/server/render/page.js:29:18)
    at renderPage (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/core/render/core.js:56:26)
    at #tryRenderRoute (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/core/pipeline.js:115:24)
    at DevPipeline.renderRoute (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/core/pipeline.js:58:46)
    at handleRoute (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/vite-plugin-astro-server/route.js:229:33)
    at async run (file:///Users/nicholasbaier/absent-asteroid/node_modules/astro/dist/vite-plugin-astro-server/request.js:53:14)
pilcrowonpaper commented 10 months ago

Looks like something's failing when importing better-sqlite3 and likely not an issue with Lucia. I'd recommend asking Astro's or better-sqlite3 community

nbbaier commented 10 months ago

Thanks!