节点中的本地datereact-intl

我正在尝试使用react-intl在React App上设置i18n。 该应用程序是通用呈现(所以在客户端和服务器使用节点)。 我有一个基本的例子是这样的:

import React, {Component} from 'react'; import ReactDOM from 'react-dom'; import {IntlProvider, FormattedDate} from 'react-intl'; class App extends Component { const date = new Date(); render() { return ( <div> <FormattedDate value={date} /> </div> ); } } ReactDOM.render( <IntlProvider locale="en-GB"> <App /> </IntlProvider>, document.getElementById('container') ); 

服务器呈现的格式化date与客户端呈现date不同,导致反应校验和无效,并使服务器呈现。 服务器正在发送date的en-US语言环境,并且浏览器正在呈现en-GB

我在服务器和浏览器中都试过了这个小testing:

 var date = new Date(); console.log(date.toLocaleDateString('en-GB')); console.log(date.toLocaleDateString('en-US')); 

在浏览器中logging:

“2016/04/13”“2016/04/13”

这是我所期望的,但在节点我得到

“2016/04/13”“2016/04/13”

这也许是为什么服务器呈现版本的反应代码是不同的浏览器版本?

我只是猜测这是问题。 节点是版本v5.4.1

所以如果有人提出反对同样的问题,这是我做了什么来解决它。 节点默认只支持en语言环境,但这实际上不是en-GB语言环境,而是en-US版本。 你可以用你想要的icu来重build节点 – https://github.com/nodejs/node/wiki/Intl或者另外我从npm安装了完整的icu包https://www.npmjs.com/package/full-加护病&#x623F;

也可以用Intl包填充node.js Intl。 请参阅https://github.com/yahoo/intl-locales-supported