在 React Native 中使用 moment.js 無法載入語系檔案

Posted lijianming180

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 React Native 中使用 moment.js 無法載入語系檔案相关的知识,希望对你有一定的参考价值。

moment.js 是很常見的日期時間 library,友善的 API 與極佳的執行效率是它的兩大賣點。例如 (new Date()).getFullYear(),如果使用 moment.js 我可以只寫 moment().get('year'),可讀性增強許多。

問題

React Native 0.29.x 預設使用 ES6,並支援 import 語法。問題出在如果遵照官方網站的說明去載入語系檔,會發生找不到模組 (cannot find module) 的錯誤。推測可能是 moment.js 從 ES5 移植到 ES6 沒有轉換完全。

1
2
3
import moment from 'moment';
moment.locale('zh-tw');
console.log(moment.months());

解法

GitHub 上已經有人回報相關錯誤,參考 大专栏  在 React Native 中使用 moment.js 無法載入語系檔案ta-url="aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0LW5hdGl2ZS9pc3N1ZXMvMTYyOQ==" title="https://github.com/facebook/react-native/issues/1629">facebook/react-native#1629 得出以下解法。

1
2
3
4
import moment from 'moment';
import momentLocale from 'moment/locale/zh-tw'; // 多這一行
moment.updateLocale('zh-tw', momentLocale); // 改這一行
console.log(moment.months());

原理是使用 ES6 的語法將語系檔案手動載入之後使用 updateLocale 手動覆寫。issue 中的 locale([locale_name], [locale_hash]) 已經被 deprecated,必須改用 updateLocale

以上是关于在 React Native 中使用 moment.js 無法載入語系檔案的主要内容,如果未能解决你的问题,请参考以下文章

某些设备中的时区错误 - React Native

我想在Postman Native App中使用moment.js(或任何其他脚本)

React native Util 常用工具类

我想在 Postman Native App 中使用 moment.js(或任何其他脚本)

react使用moment进行日期格式化

React开发(262):react中活动时间回显用moment