31

我最近更新了我的 Android Studio 和许多组件/sdk,从那时起 React-Intl 抱怨intl库丢失,即使它之前工作正常。

我已经安装了intlpolyfill,并将它导入到我的主文件的最顶部App.js。我还导入localeDatareact-intl添加它。IntlProvider然后,我在指定locale没有消息的情况下呈现我的视图(我FormattedNumber现在只使用)

这是我的代码的简化版本:

import 'intl';
import { IntlProvider, FormattedNumber, addLocaleData } from 'react-intl';
import en from 'react-intl/locale-data/en';

addLocaleData(en);

[...]

render() {
    return (
        <IntlProvider locale="en">
            <Text>
                <FormattedNumber value={123} />
            </Text>
        </IntlProvider>
    )
}

我收到以下错误:

[React Intl] 格式化数字错误。ReferenceError:尚未为此对象提供区域设置数据。

在此处输入图像描述

我不明白发生了什么事。有人遇到同样的问题吗?

谢谢

4

4 回答 4

74

我没有从 导入语言环境数据react-intl,而是解决了从 导入 polyfill 和语言环境数据的问题intl

安装intl

npm install intl

在您的应用程序的最顶部添加以下内容:

import 'intl';
import 'intl/locale-data/jsonp/en';
于 2017-01-30T11:44:30.447 回答
9

修改“build.gradle”

在android上,你可以修改/android/app/build.gradle里面的“build.gradle”文件。请记住,它不是 /android/app/gradle/build.gradle 中的文件。

然后,转到站点文件并搜索:

      /**
     * JavaScriptCore 的首选构建风格。
     *
     * 例如,要使用国际变体,您可以使用:
     *`def jscFlavor = 'org.webkit:android-jsc-intl:+'`
     *
     * 国际版本包括 ICU i18n 库和必要的数据
     * 允许使用例如 `Date.toLocaleString` 和 `String.localeCompare`
     * 与 en-US 以外的语言环境一起使用时给出正确的结果。注意
     * 此变体每个架构比默认值大约 6MiB。
     */
     def jscFlavor = 'org.webkit:android-jsc:+'

现在,修改最后一行,或者简单地将其注释掉并复制并粘贴上面类似的行。结果将是这样的:

      /**
     * JavaScriptCore 的首选构建风格。
     *
     * 例如,要使用国际变体,您可以使用:
     *`def jscFlavor = 'org.webkit:android-jsc-intl:+'`
     *
     * 国际版本包括 ICU i18n 库和必要的数据
     * 允许使用例如 `Date.toLocaleString` 和 `String.localeCompare`
     * 与 en-US 以外的语言环境一起使用时给出正确的结果。注意
     * 此变体每个架构比默认值大约 6MiB。
     */
     //def jscFlavor = 'org.webkit:android-jsc:+'
     def jscFlavor = 'org.webkit:android-jsc-intl:+'

于 2021-05-27T12:22:57.587 回答
8

注意,现在只需import 'intl';在顶部执行并仍然从react-intl. 使用以下版本:

"intl": "^1.2.5",
"react-intl": "^2.2.2",
于 2017-02-20T10:27:58.663 回答
1

更新到 React Native 0.65 或更高版本

最后,“intl”现在包含在 Hermes 中,它与 React Native 0.65 或更新版本一起提供 - React Native 博客中的更多内容

于 2022-01-15T00:56:55.620 回答