1

问题

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 了解语言环境?

4

1 回答 1

0

您需要节点 14+。节点 12- 没有所有语言环境数据。

于 2021-03-15T01:08:44.037 回答