美文网首页
moment.js 中文国际化失效 vite vue3

moment.js 中文国际化失效 vite vue3

作者: 林遇66 | 来源:发表于2021-07-30 11:47 被阅读0次

    今天尝试用vite和vue3写项目,但是碰到一个问题,引入moment.js,使用中文国际化的时候,一直没有生效。

    不生效的写法如下,正常来说应该没有问题。

    import moment from "moment";
    import "moment/locale/zh-cn";
    moment.locale('zh-cn')
    

    查了一下资料,原来vite只支持ES modules,可以看下尤大的在vite的issues的解释:https://github.com/vitejs/vite/issues/945

    我们再看下moment/locale/zh-cn的写法,果然不是ES modules写法。

    ;(function (global, factory) {
       typeof exports === 'object' && typeof module !== 'undefined'
           && typeof require === 'function' ? factory(require('../moment')) :
       typeof define === 'function' && define.amd ? define(['../moment'], factory) :
       factory(global.moment)
    }(this, (function (moment) { 'use strict';
        //! moment.js locale configuration
        var zhCn = moment.defineLocale('zh-cn', {
          ...
        });
        return zhCn;
    })));
    

    那怎么解决呢,其实moment.js是支持ES modules的国际化的。我们找到的moment/dist/locale/zh-cn,写法如下:

    import moment from '../moment';
    export default moment.defineLocale('zh-cn', {
     ....
    });
    

    所以修改一下我们引入路径就可以了。生效的写法如下。

    import moment from "moment";
    import 'moment/dist/locale/zh-cn'
    moment.locale('zh-cn')
    

    测试一下 果然生效了。

    moment.locales()//["en", "zh-cn"]
    

    备注moment.js版本2.29.1

    由于不知道vite只支持ES module(esm)的写法,搜索了好久才解决。

    留下了没有技术的泪水。

    避免踩坑,记录一下。

    相关文章

      网友评论

          本文标题:moment.js 中文国际化失效 vite vue3

          本文链接:https://www.haomeiwen.com/subject/xkiqvltx.html