

Vue.js、Buefy、firebaseを使いwebアプリを作成しております。  
フォームに入力した情報をボタンをクリックして＠clickイベントを実行しpublishを実行しています。  
その際、以下のようなエラーが出てしまいます。  
恐らくショボいミスなのでしょうが、ご享受お願いします。

### エラー

[code]

    TypeError:formatDate is not a function
    [Vue warn]: Error in v-on handler: "TypeError: formatDate is not a function"
    found in
    ---> <BButton>
    <Create> at src/views/Create.vue
    <App> at src/App.vue
    <Root>
    
[/code]

### 試したこと

`const date = this.$date(new Date(), "DD MMMM, YYYY")` を  
`const date = this.$date(new Date(), "dd MMMM, yyyy")` に変えてみる。  
`const date = firebase.firestore.Timestamp.fromDate(new Date(`2020/01/01
00:00:00`));` に変えてみたりしましたが、結果は変わりませんでした。

### 現状のソースコード

[code]

    <section>
        <h2 class="title is-3">taitle</h2>
             <b-input type="text" class="new_input" placeholder="Title" v-model="title"></b-input>
    
             <b-input type="text" class="tag" placeholder="タグ" v-model="tag" @keypress.enter="addTag"></b-input>
            <div v-if="tags.length > 0" class="tags">
              <li v-for="(tag,idx) in tags" :key="idx" class="content is-rounded">
               {{ tag }}
               <span class="cursor-pointer" @click="removeTag"></span>
              </li>
            </div>
            <textarea class="textarea" placeholder="Content" v-model="content"></textarea>
          <b-button type="is-primary" @click="publish" expanded>投稿する</b-button>
      </section>
        
        <script>
        import firebase from 'firebase';
        import { auth } from '@/main'
        import { db } from '@/main'
        export default {
          data() {
            return {
              title: '',
              tags: [],
              content: '',
              tag: '',
              currentUser: {}
            }
          },
          created() {
            auth.onAuthStateChanged(user => { 
              this.currentUser = user
            })
          },
          methods: {
            addTag() {
              this.tags.push(this.tag),
              this.tag = ''
            },
            removeTag(idx) {
              this.tags.splice(idx,1)
            },
            publish() {
              const date = this.$date(new Date(), "dd MMMM, yyyy")
              db.collection('posts').add({
                title: this.title,
                tags: this.tags,
                content: this.content,
                createdAt: date,
                uid: this.currentUser.uid
              })
              .then((post) =>
                this.$router.push('/post/' + this.post.uid + '/' + this.post.id),
                alert('The post got published!')
              )
            }
          }
        }
        </script>
    
[/code]


CC BY-SA 4.0
2020-06-18T10:54:51.260
67785
2022-08-14T23:00:45.153
2020-06-18T18:39:45.147
2376
39431
question
vue.js firebase
Vue.js で TypeError:formatDate is not a function が出てしまう


`this.$date`とされてるのは何か意味があるのでしょうか。  
Vueのプロパティにはdateはないと思いますが（dataならありますけど）

独自にdateを別で定義されてないかぎり、そもそも存在していないのでアクセスできないと思います。

またJS単体だとDateをそのようにフォーマットする組み込み関数自体がないのではと思います。

どこからかコードを持ってこられたのでしょうか？？

JSは日付操作時が若干貧弱なので、一般的にはmomentjsなどを使って実装することが多いです。

ターミナルで

[code]

    npm install moment
    
[/code]

もしくは

[code]

    yarn add moment
    
[/code]

した後

[code]

    import moment from 'moment'
     //（中略）
    const date = moment().format('dd MMMM, yyyy')
    
    
[/code]

で通るのではと思います。


CC BY-SA 4.0
2020-08-01T01:09:41.213
69152
2020-08-01T02:16:35.003
2020-08-01T02:16:35.003
32986
41331
67785
answer