我最近更新了我的Android Studio和许多组件/ sdk,从那以后,React-Intl抱怨intl
库丢失了,即使它之前工作正常。
我已经安装了intl
polyfill,我将其导入主文件App.js
的最顶层。我还从localeData
导入react-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:没有区域设置数据 已经提供了这个对象。
我不明白发生了什么。有人遇到同样的问题吗?
由于
答案 0 :(得分:27)
我没有从intl
导入区域设置数据,而是解决了从intl
安装npm install intl
import 'intl';
import 'intl/locale-data/jsonp/en';
在应用的最顶部添加:
liked
答案 1 :(得分:6)
抬头,现在只需执行顶部的import 'intl';
并仍然加载来自react-intl
的区域设置数据。使用以下版本:
"intl": "^1.2.5",
"react-intl": "^2.2.2",
答案 2 :(得分:0)
在android上,你可以修改/android/app/build.gradle里面的“build.gradle”文件。请记住,它不是 /android/app/gradle/build.gradle 中的文件。
然后,转到站点文件并搜索:
/** * The preferred build flavor of JavaScriptCore. * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ def jscFlavor = 'org.webkit:android-jsc:+'
现在,修改最后一行,或者简单地将其注释掉并复制并粘贴上面类似的内容。结果将是这样的:
/** * The preferred build flavor of JavaScriptCore. * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ //def jscFlavor = 'org.webkit:android-jsc:+' def jscFlavor = 'org.webkit:android-jsc-intl:+'