我遵循 NextJS 文档中的 Prefixing defaultLocale 但是,当我运行
yarn build
时,我遇到构建错误
> Export encountered errors on following paths:
/: /default
/_error: /404
/_error: /500
/_error: /default/404
/_error: /default/500
/about: /default/about
/apply: /default/apply
...
我怀疑它与
getStaticProps
和 locale
有关以获取我的一些内容。
export async function getStaticProps({ locale }: { locale: string }) {
const lang = locale.split("-")[0] as Locale;
const pageData = apply[lang];
return {
props: {
pageData,
},
};
}
我尝试有条件地更新
lang
的内容,如下所示:
const lang = locale !== 'default' ? locale.split("-")[0] as Locale : 'fr' as Locale;
我仍然收到错误。
经过一些更多挖掘,这似乎是一个已知问题。 FWIW,这是我的解决方案。
我保留了Next JS 文档中提供的逻辑。但由于我在页面中使用区域设置来提取内容和上下文提供程序以在某些组件中传递区域设置,因此解决方法如下:
在我使用
getStaticProps
或 getServerSideProps
的 NextJS 页面中,我保留了最初的三元条件:
const lang = locale !== 'default' ? locale.split("-")[0] as Locale : 'fr' as Locale;
我更新了 _app.tsx 中的 LangContext(我的上下文提供程序)以解释默认情况:
<LangContext.Provider value={ locale === "default" ? "fr" : locale || "fr" }>
...
</LangContext.Provider>
我知道这不是最理想的解决方案,但看来我并不是唯一一个为此苦苦挣扎的人,而且在 NextJS 的当前状态下没有其他选择。