Issues on npm run dev, but not on npm run build with static export
Unanswered
American Sable posted this in #help-forum
American SableOP
app/page.tsx
This works great after npm run build and npx serve.
But on npm run dev it results always to the defaultLang
"use client";
import { RedirectType, redirect } from "next/navigation";
import generalConfig from "@/app/config/general.json";
export default function RootPage() {
let storedLang = generalConfig.defaultLanguage;
if (typeof localStorage !== "undefined") {
storedLang = localStorage.getItem("language") || "";
}
if (!generalConfig.languages.includes(storedLang)) {
localStorage.setItem("language", generalConfig.defaultLanguage);
return redirect(generalConfig.defaultLanguage, RedirectType.replace);
}
return redirect(storedLang, RedirectType.replace);
}This works great after npm run build and npx serve.
But on npm run dev it results always to the defaultLang
1 Reply
American SableOP
This seem to work, is that the "recommended" solution?
"use client";
import { RedirectType, redirect } from "next/navigation";
import generalConfig from "@/app/config/general.json";
import dynamic from "next/dynamic";
const Root = dynamic(
() => {
const storedLang = localStorage.getItem("language") || "";
if (!generalConfig.languages.includes(storedLang)) {
localStorage.setItem("language", generalConfig.defaultLanguage);
return redirect(
generalConfig.defaultLanguage,
RedirectType.replace
);
}
return redirect(storedLang, RedirectType.replace);
},
{ ssr: false }
);
// TODO: Add metatags based on the default language
export default function RootPage() {
return (
<html lang={generalConfig.defaultLanguage}>
<body>
<Root />
</body>
</html>
);
}