如何在混音中使用时刻格式?

How to use moment format in mixing?

在我的 laravel 5.7 / vuejs 2.5 应用程序中,我使用时刻库​​从数据库格式化日期时间 它在我的组件中工作,但是当我尝试将 moment 包装在我的混合函数中并带有参数时出现错误。 package.json:

{
    "private": true,
    "devDependencies": {
        "axios": "^0.18",
        "vue": "^2.5.17"
    ...
    },
    "dependencies": {
        "vue-moment": "^4.0.0",
        "vue-router": "^3.0.1",
        "vuex": "^3.0.1"
    ...
    }
}

在 resources/js/app.js 中:

import Vue from 'vue';
...
import moment from 'vue-moment'
Vue.use(moment)

在我的组件中:

<template>
    ...
        <hr>
        <!-- THIS LINE WORKS OK-->
         <span>{{ nextCategory.created_at | moment("dddd, MMMM Do YYYY") }}</span>;
        <hr>
        <!-- {{ momentDatetime(nextCategory.created_at,'Do MMMM, YYYY h:mm:ss A') }} -->

     ...
</template>
<script>
    import {bus} from '../../app';
    import appMixin from '../../appMixin';

    export default {
        name: 'list',
        mixins: [appMixin],


</script>

但是如果取消注释最后一行我得到错误

[Vue warn]: Error in render: "TypeError: __WEBPACK_IMPORTED_MODULE_0_vue_moment___default(...) is not a function"

并在 resources/js/appMixin.js 中:

import moment from 'vue-moment'
export default {

    methods: {

        ...
        momentDatetime(datetime, datetime_format, default_val) {
            return moment(datetime).format(datetime_format);
        },
        ...

我在网上找到了这个用“.format”方法判断的方法,但是貌似是无效的。 哪种方法正确?

谢谢!

您使用的是 vue-moment 而不是 moment,因此在您的 package.json 通过 运行 添加 moment 在您的终端 npm install moment 或 yarn add moment 中,然后在您的 package.json 你应该看到矩依赖性

同时将 mixin 中的 import 更改为 import moment from 'moment'

也许像其他答案一样,你必须使用 moment 而不是 vue-moment。

最新版本的 moment 也有问题,这里 posted 的解决方案之一是降级到 moment 2.18.1,也许 vue-moment 使用的是另一个版本。

检查此 post 与您的问题相同的错误: https://github.com/moment/moment/issues/4229

他们还提到了另一个问题: https://github.com/moment/moment/issues/4216