Comments (9)
This happens when a site has multiple branching routes (like an app route and an admin route), and you browse between them in the same session, so $page
refers to the same object. I'll try to come up with a fix for that soon.
from sveltekit-flash-message.
Should be fixed now in 2.2.2. If you still get the error, are you using getFlash options on more than one page in the route? (clearOnNavigate is default true, so you can remove that)
from sveltekit-flash-message.
I get a similar issue, still present using [email protected]
using the server-side approach as documented.
Note: It does look like this is only thrown when an HTTP error page (4xx, 5xx) is rendered... TBC.
As per your last comment, @ciscoheat, no other options initializer is present.
src/routes/+layout.server.ts
import { loadFlash, flashCookieOptions } from 'sveltekit-flash-message/server';
flashCookieOptions.secure = false;
export const load = loadFlash(() => {});
Stack trace
Error: getFlash options can only be set once, at a top-level component.
at _initFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_modules
/sveltekit-flash-message/dist/client.js:38:15)
at Module.getFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_mo
dules/sveltekit-flash-message/dist/client.js:124:12)
at src/routes/+layout.svelte:8:17
at Object.$$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at .svelte-kit/generated/root.svelte:45:40
at $$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at Object.render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:164:17)
at Module.render_response (node_modules/.pnpm/@[email protected]_@[email protected]_svelte@4
[email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/render.js:171:29)
at async Module.render_page (node_modules/.pnpm/@[email protected]_@[email protected]_svelte
@[email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/index.js:284:10)
at async resolve (node_modules/.pnpm/@[email protected]_@[email protected][email protected]_vite
@5.0.10/node_modules/@sveltejs/kit/src/runtime/server/respond.js:409:18)
Error: getFlash options can only be set once, at a top-level component.
at _initFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_modules
/sveltekit-flash-message/dist/client.js:38:15)
at Module.getFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_mo
dules/sveltekit-flash-message/dist/client.js:124:12)
at src/routes/+layout.svelte:8:17
at Object.$$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at .svelte-kit/generated/root.svelte:45:40
at $$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at Object.render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:164:17)
at Module.render_response (node_modules/.pnpm/@[email protected]_@[email protected]_svelte@4
[email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/render.js:171:29)
at async Module.respond_with_error (node_modules/.pnpm/@[email protected]_@[email protected]
[email protected][email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/respond_with_error.js:83:10)
at async Module.render_page (node_modules/.pnpm/@[email protected]_@[email protected]_svelte
@[email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/index.js:303:10)
Error: getFlash options can only be set once, at a top-level component.
at _initFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_modules
/sveltekit-flash-message/dist/client.js:38:15)
at Module.getFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_mo
dules/sveltekit-flash-message/dist/client.js:124:12)
at src/routes/+layout.svelte:8:17
at Object.$$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at .svelte-kit/generated/root.svelte:45:40
at $$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at Object.render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:164:17)
at Module.render_response (node_modules/.pnpm/@[email protected]_@[email protected]_svelte@4
[email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/render.js:171:29)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Module.render_page (node_modules/.pnpm/@[email protected]_@[email protected]_svelte
@[email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/index.js:284:10)
Error: getFlash options can only be set once, at a top-level component.
at _initFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_modules
/sveltekit-flash-message/dist/client.js:38:15)
at Module.getFlash (node_modules/.pnpm/[email protected]_@[email protected][email protected]/node_mo
dules/sveltekit-flash-message/dist/client.js:124:12)
at src/routes/+layout.svelte:8:17
at Object.$$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at .svelte-kit/generated/root.svelte:45:40
at $$render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:156:16)
at Object.render (node_modules/.pnpm/[email protected]/node_modules/svelte/src/runtime/internal/ssr.js:164:17)
at Module.render_response (node_modules/.pnpm/@[email protected]_@[email protected]_svelte@4
[email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/render.js:171:29)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Module.respond_with_error (node_modules/.pnpm/@[email protected]_@[email protected]
[email protected][email protected]/node_modules/@sveltejs/kit/src/runtime/server/page/respond_with_error.js:83:10)
from sveltekit-flash-message.
@CrlH Are you setting the getFlash
options in another layout, or none at all? If you can reproduce this in a repo, that'd be much appreciated.
from sveltekit-flash-message.
Aha - my bad: while preparing a repo, I did find a getFlash
that sets clearAfterMs
, like this:
<script lang="ts">
import { getFlash } from 'sveltekit-flash-message/client';
import { page } from '$app/stores';
const flash = getFlash(page, {
clearAfterMs: 10000,
});
</script>
For me it made sense to set flashCookieOptions
server-side, but this appears to be the only option you can set server-side... Meaning this behavior prevents you from setting other options on the client side, right? 😕
Might be good to add a(nother) note to the docs, or to consider other options on server side too... Though I'd have to admit that things like clearAfterMs
make a lot less sense server-side. 🤓
from sveltekit-flash-message.
The only common option for server and client are the cookies. Maybe there can be a similar cookie option for the client as on the server, to separate them from the other options.
from sveltekit-flash-message.
Thanks! I’ll change my app to have flashCookieOptions
to be handled on client-site.
But it looks like one that sets flashCookieOptions
server-side can’t set other options… That’s limiting, no?
from sveltekit-flash-message.
What other options on the server are there?
from sveltekit-flash-message.
Related Issues (20)
- Flash not showing when redirecting from +layout.server.ts HOT 5
- No messages without refresh HOT 17
- Flash message not appearing when expected HOT 19
- Question: do I need to integration flashModule if I am using toasts? HOT 1
- Missing cookie Same-Site attribute HOT 3
- [SOLVED] Overwriting 'set-cookie' header via server hook prevents flash message HOT 2
- Problems when subscribing to flash store and hovering over <a> tag where load function uses redirect. HOT 7
- External callbacks not redirecting correctly HOT 8
- Example for flashCookieOptions HOT 7
- Flash Messages Not Working HOT 5
- Error when using vitest 0.34.1 - Failed to resolve entry for package "sveltekit-flash-message". HOT 3
- Flash message not appearing when using layout groups. HOT 2
- Firefox Warning: Misuse of the SameSite Cookie Attribute HOT 3
- setFlash not working HOT 3
- Persistent Flash store data after server redirect HOT 12
- flash store undefined after redirect HOT 1
- Identifier 'load' has already been declared HOT 8
- feature request: consider adhering to SvelteKit 2.0 practices regarding (not) throwing errors/redirects HOT 3
- chore: update SvelteKit `peerDependency`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sveltekit-flash-message.