npm安装全球化 – E_MISSING_BUNDLE

我相信这是一个愚蠢的configuration问题,但我似乎无法弄清楚。 我使用这种方式安装的nodejs中的全局化包:

npm install --save globalize cldr-data 

看着我的package.json安装:

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

然后我创build了一个nodeunittesting:

 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(); }; 

第一次testing通过,但第二次失败,这个错误:

 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 

任何人有任何想法如何我错误configuration?

在做这篇文章之后马上就想出来了。

事实certificate,如果我添加“es-MX”的语言环境列表加载entireMainFor这个工程作为exepcted:

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

希望这可以帮助别人! 不pipe出于什么原因,我认为在给定语言下的所有语言环境都加载了这个函数。 我已经提出了一个问题来预测全球化 ,其他人可能会做出相同的假设,稍微改变一下文档就可以澄清 – 这是在这里: jquery / globalize#610 。

Interesting Posts