问题
Next js SSR 环境无法检测“gr”和“rs”或“es”等某些语言的语言环境。我正在使用 react-intl https://github.com/formatjs/formatjs
这导致我的浏览器在页面加载时显示此错误。
utils.js:19 Error: [@formatjs/intl Error MISSING_DATA] Missing locale data for locale: "sp" in Intl.NumberFormat. Using default locale: "en" as fallback
忽略错误
我设法通过设置默认语言环境并像这样处理 onError 来抑制错误
function onError(e) {
if (e.code = ReactIntlErrorCode.MISSING_DATA) {
return
}
}
<IntlProvider key={locale} locale={locale} messages={res[locale]} defaultLocale="en" onError={onIntlError}>
然而,这并不是一个真正的修复,因为现在服务器端渲染将不同于实际请求的页面(它被烘焙到 url 中)。http://localhost/rs/page
库中失败的行
特别是在 SSR 库中失败的行是这一行,因为语言环境返回一个空数组。
else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {
水合错误
此外,如果我使用上面的 onError 技巧,我自然会收到 SSR 水合物错误,因为它在服务器上以不同的语言呈现
"Warning: Text content did not match. Server: "Notifications" Client:
"Notificaciones"
如何让 nextjs ssr 了解语言环境?