NodeJS polyfill运行时

时间:2015-10-22 15:15:02

标签: node.js internationalization polyfills kraken.js

在我的krakenjs / nodejs应用程序中,我使用dust and dust-intl格式化日期。

正如您可以阅读here以添加对其他语言的支持,我必须填充运行时。在同一页面中,它们提供了一个函数,但是如何在项目中包含此代码?

这是他们说我应该使用的代码:

var areIntlLocalesSupported = require('intl-locales-supported');

var localesMyAppSupports = [
    /* list locales here */
];

if (global.Intl) {
    // Determine if the built-in `Intl` has the locale data we need.
    if (!areIntlLocalesSupported(localesMyAppSupports)) {
        // `Intl` exists, but it doesn't have the data we need, so load the
        // polyfill and replace the constructors with need with the polyfill's.
        require('intl');
        Intl.NumberFormat   = IntlPolyfill.NumberFormat;
        Intl.DateTimeFormat = IntlPolyfill.DateTimeFormat;
    }
} else {
    // No `Intl`, so use and load the polyfill.
    global.Intl = require('intl');
}

1 个答案:

答案 0 :(得分:0)

polyfill定义global.Intl,因此标准包含可以解决问题。可能就在您应用的顶部。

var intlPolyfill = require('../path/to/polyfill/file.js')

或者您可以将该填充代码插入主应用程序文件中。同样,它会改变global,因此更改会影响所有代码。在任何需要使用polyfilled Intl的代码之后,不要包含/运行polyfill代码。

最后,如果polyfill必须定义global.Intl,它会使用节点包(' intl')来定义它,所以你需要确保你有该软件包已安装。