关于在nuxt中引入moment

636 阅读1分钟

第一步:安装

npm 安装moment,文件根目录下安装,指令如下

npm install moment -save

第二步:引入

在组件中引用和使用,其中nuxt不能像vue一样将moment改写为Vue的原型属性,所以你想使用moment就得在每个组件中引用一次

import moment from "moment";

第三步:使用

如果直接使用

这里的item.created_at,是我当时写的遍历出来数组的时间

{{moment(item.created_at).format('MMMM Do YYYY, h:mm:ss a')}}

就会出现这个错误

 [Vue warn]: Property or method "moment" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.

属性或方法“moment”不是在实例上定义的,而是在渲染期间引用的。通过初始化该属性,确保该属性是反应性的,无论是在data选项中,还是在基于类的组件中。

直接在data中定义moment也可以,但是出来的是中文的

所以可以在methods中封装一个方法(还可以设置成中文):

  methods: {
           format(time, rule) {
           return moment.locale("zh-cn"), moment(time).format(rule);
             },
},

然后调用

{{ format(item.created_at, "lll") }}

因为nuxt是在服务器就已经渲染了,而moment是在服务器渲染,出现了异步,所以报错