node.js - npm install 全局化 - E_MISSING_BUNDLE

标签 node.js jquery-globalization cldr javascript-globalize

我确信这是一个愚蠢的配置问题,但我似乎无法弄清楚。我正在以这种方式安装的nodejs中使用globalize包:

npm install --save globalize cldr-data

查看我安装的package.json:

"globalize": "^1.1.1",
"cldr-data": "^29.0.1",

然后我创建了一个nodeunit测试:

var Globalize = require( "globalize" );
Globalize.load( require( "cldr-data" ).entireSupplemental() );
Globalize.load( require( "cldr-data" ).entireMainFor( "es") );
Globalize.loadMessages({
    en: {
        hello: "Hello, {0} {1} {2}",
        hey: "Hey, {first} {middle} {last}"
    }
});
exports['test message translation'] = function (test) {
    var enFormatter = Globalize( "es-MX" ).messageFormatter( "hello" );
    testString = enFormatter([ "Wolfgang", "Amadeus", "Mozart" ]);
    test.equal(testString, "Hello, Wolfgang Amadeus Mozart");
    test.done();
};
exports['test date localization'] = function (test) {
    test.equals("18/4/2016", Globalize( "es-MX" ).dateFormatter()( new Date()));
    test.done();
};

第一个测试通过,但第二个测试失败并出现以下错误:

Error: E_MISSING_BUNDLE: {"locale":"es-MX"}
    at createError (/Users/darrin/src/tot/commons/node_modules/globalize/node_modules/cldrjs/dist/cldr.js:341:11)
    at validate (/Users/darrin/src/tot/commons/node_modules/globalize/node_modules/cldrjs/dist/cldr.js:357:10)
    at Cldr.main (/Users/darrin/src/tot/commons/node_modules/globalize/node_modules/cldrjs/dist/cldr.js:663:3)
    at dateExpandPattern (/Users/darrin/src/tot/commons/node_modules/globalize/dist/globalize/date.js:110:18)
    at Globalize.dateFormatter.Globalize.dateFormatter [as dateFormatter] (/Users/darrin/src/tot/commons/node_modules/globalize/dist/globalize/date.js:1828:12)
    at Object.exports.test date localization (/Users/darrin/src/tot/commons/tests/globalize/globalize.test.js:43:40)
    at Object.<anonymous> (/Users/darrin/src/tot/commons/node_modules/nodeunit/lib/core.js:236:16)
    at /Users/darrin/src/tot/commons/node_modules/nodeunit/lib/core.js:236:16
    at Object.exports.runTest (/Users/darrin/src/tot/commons/node_modules/nodeunit/lib/core.js:70:9)
    at /Users/darrin/src/tot/commons/node_modules/nodeunit/lib/core.js:118:25

有人对我如何错误配置有任何想法吗?

最佳答案

发表这篇文章后立即想通了。

事实证明,如果我将“es-MX”添加到要在 entireMainFor 中加载的语言环境列表中,这将按预期工作:

Globalize.load( require( "cldr-data" ).entireMainFor( "es", "es-MX") );

希望这对其他人有帮助!无论出于何种原因,我认为给定语言下的所有语言环境都已加载到此函数中。我已向 globalize 提交了问题预感其他人可能会做出相同的假设,并且对文档进行轻微更改可以澄清 - 在这里:jquery / globalize #610 .

关于node.js - npm install 全局化 - E_MISSING_BUNDLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703381/

相关文章:

node.js - 使用 yarn 在 Visual Studio Code 中运行 NodeJS 项目

asp.net-mvc-3 - 使用ASP.NET MVC 3本地化jQuery验证

javascript - 粗略的 Unicode -> 没有 CLDR 的语言代码?

ios - 使用 iOS Stringsdict 文件的显式复数字符串

node.js - 在这种情况下使用gulp和直接打开index.html有什么区别?

node.js - 如何在 Node.js 中的 MongoDB mapReduce 函数中处理 ISO 日期字符串

asp.net - 全局化、本地化、国际化 : Add Languages (French, 等)/asp.net 4.0/for dummies

json - 错误搜寻 : CLDR 30 JSON data no longer has currencySpacing information

node.js - Node 查看程序是否安装

asp.net-mvc-4 - JQuery 验证全局化 MVC 4 DateTime