CI などの環境で Node.js の Intl API をはじめとする国際化サポート1が想定した挙動にならない場合があります。たとえば Travis CI の Node.js 環境で以下のコマンドを実行すると ja
を指定していても en-US
相当の出力になっています。
$ node -p '(new Intl.DateTimeFormat("ja")).format(new Date())'
3/26/2019
Node.js の i18n は ICU を必要としており2、スクリプト実行の前に full-icu をインストールして環境変数に出しておけば正常に動作します。
$ npm i -g full-icu
export NODE_ICU_DATA=$(node-full-icu-path)
$ node -p '(new Intl.DateTimeFormat("ja")).format(new Date())'
2019/3/26
Travis CI の場合は .travis.yml
の before_install
などに指定しておくと期待した出力が得られます3。
環境
Node.js v11.10.0
Travis CI Worker v6.2.0