ReferenceError:Intl未在Node.js中定义

use*_*725 5 javascript internationalization node.js

我正在尝试new Intl.Collator()在Node.js中构造一个对象.

有谁知道为什么Intl对象不会出现在Node运行时中?

根据MDN,它被ECMAScript指定为命名空间,所以我不明白它为什么不存在.

And*_*ate 6

不幸的是,节点当前(从版本0.10开始,在编写时)不支持ECMA-402 Intl对象,除非您执行node.js 自述文件中记录的节点的自定义编译.

有libicu i18n支持:

svn checkout --force --revision 214189 \
   http://src.chromium.org/svn/trunk/deps/third_party/icu46 \
   deps/v8/third_party/icu46
./configure --with-icu-path=deps/v8/third_party/icu46/icu.gyp
make
Run Code Online (Sandbox Code Playgroud)

make install

如果编译节点的自定义构建不是一个选项或者想法充满了恐惧,解决方法是使用intl模块,这是一个涵盖EMCA-402标准的Javascript polyfill,除了Intl.Collator原因之外项目自述文件中包含的内容.

使用该模块是直截了当的:

npm install intl --save
Run Code Online (Sandbox Code Playgroud)

然后在您的节点代码中:

var Intl = require('intl');
console.log(new Intl.NumberFormat("de-DE").format(12345678));
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.