pilcrowonpaper / oslo

A collection of auth-related utilities
https://oslo.js.org
MIT License
1.06k stars 35 forks source link

✘ [ERROR] No loader is configured for ".node" files #74

Closed pboling closed 4 months ago

pboling commented 5 months ago

Just got an error error with Svelte 5.0.0-next.133, tried upgrading to Svelte 5.0.0-next.135, also SvelteKit 2.5.8. I've upgraded a lot of packages in the last day and dependabot has been fully broken on pnpm v9 ever since it was released months ago, so I wasn't able to upgrade packages "properly" by running CI for each.

My errors were:

✘ [ERROR] No loader is configured for ".node" files: node_modules/.pnpm/@node-rs+bcrypt-darwin-arm64@1.9.0/node_modules/@node-rs/bcrypt-darwin-arm64/bcrypt.darwin-arm64.node
    node_modules/.pnpm/@node-rs+bcrypt@1.9.0/node_modules/@node-rs/bcrypt/binding.js:165:36:
      165 │             nativeBinding = require('@node-rs/bcrypt-darwin-arm64')

and

✘ [ERROR] No loader is configured for ".node" files: node_modules/.pnpm/@node-rs+argon2-darwin-arm64@1.7.0/node_modules/@node-rs/argon2-darwin-arm64/argon2.darwin-arm64.node
    node_modules/.pnpm/@node-rs+argon2@1.7.0/node_modules/@node-rs/argon2/index.js:173:36:
      173 │             nativeBinding = require('@node-rs/argon2-darwin-arm64')

Being that neither is a direct dependency of the project, I looked to oslo which pulls them in. I had just upgraded to oslo v1.2.0.

Adding this to my vite.config.ts fixed it!

    optimizeDeps: {
        exclude: ['@node-rs/argon2', '@node-rs/bcrypt']
    },

Not sure if this is an indication of a bug, or if optimiseDeps excluding oslo is just how we configure oslo now...

pboling commented 5 months ago

Apparently a better alternative to excluding oslo is to exclude the actual offending dependencies.

        exclude: ['@node-rs/argon2', '@node-rs/bcrypt']
pboling commented 5 months ago

This appears to have been caused by the latest release of esbuild from 17 hours ago.

ref (Oslo Discord): https://discord.com/channels/1004048134218981416/1239596097752793221/1240675071203344505

pboling commented 5 months ago

Another related issue: https://github.com/vitejs/vite/discussions/12989

DarthGigi commented 5 months ago

+1 having the same issue

pilcrowonpaper commented 4 months ago

Unfortunately there's little Oslo can do here so the fix is to just exclude @node-rs/ packages

creadevv commented 1 week ago

Apparently this still does not work, or am I doing something wrong? I use SST ION (V3). Just setup the basics following the docs. Added to my existing sveltekit app.

My vite.config.ts:

import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vitest/config';

export default defineConfig({
    plugins: [sveltekit()],
    optimizeDeps: {
        exclude: ['@node-rs/argon2', '@node-rs/bcrypt']
    },
    test: {
        include: ['src/**/*.{test,spec}.{js,ts}']
    }
});

I tried adding this part also to the svelte.config.js file:

optimizeDeps: {
    exclude: ['@node-rs/argon2', '@node-rs/bcrypt']
},

Versions:

svelte-kit-sst:
    specifier: ^2.43.5
    version: 2.43.5
'@sveltejs/kit':
    specifier: ^2.6.1
    version: 2.6.1(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.4.8)
/oslo@1.2.1:
    resolution: {integrity: *****}
    dependencies:
      '@node-rs/argon2': 1.7.0
      '@node-rs/bcrypt': 1.9.0
    dev: false

The problem is, Oslo requires these packages. I need Lucia Auth, who is including the Oslo package to be functional..

Already threw a lot of hours at it, with all the included frustration. How can I fix this? I realy dont want to go to AWS Amplify or Vercel. Vercel works btw, that is the frustrating part.