質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1766閲覧

nuxt.js + microCMS でブログを作成したが、詳細ページが作成できない

progblog

総合スコア22

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/08/08 16:11

解決できないこと

microCMSで作成したブログの詳細ページを作ることができない。

やりたいこと

ポートフォリオサイトにブログを付けたい。
サイト全体をnuxtjsで実装しており、ブログ部分はmicroCMSで実装を考えている。

ブログ箇所のコード

vue

1// pages/blog.vue 2 3<template> 4 <div class="main-content"> 5 <div class="l-content"> 6 <div class="blog-block"> 7 <div class="blog-block-list" v-for="(item, index) in items" :key="index"> 8 <nuxt-link :to="'blog/' + item.id"> 9 <p class="key-catch"> <img :src="item.key.url" alt=""></p> 10 <div class="blog-info"> 11 <h3 class="blog-title">{{ item.title }}</h3> 12 </div> 13 </nuxt-link> 14 </div> 15 </div> 16 </div> 17 </div> 18</template> 19 20<script> 21import axios from "axios"; 22export default { 23 data() { 24 return { 25 items: [] 26 }; 27 }, 28 async asyncData() { 29 const{data} = await axios.get( 30 'https://dummy.microcms.io/api/v1/blog', 31 { 32 headers: { 'X-API-KEY': 'dummyAPI' } 33 } 34 ); 35 return { 36 items:data.contents 37 }; 38 } 39}; 40</script> 41

vue

1 2//pages/blig/_id.vue 3 4<template> 5 <div class="main-content"> 6 <div class="l-content"> 7 <h2>{{ item.title }}</h2> 8 <div class="content" v-html="item.disc"></div> 9 </div> 10 </div> 11</template> 12 13<script> 14import axios from "axios"; 15 16export default { 17 async asyncData({ params }) { 18 const { data } = await axios.get( 19 `https://dummy.microcms.io/api/v1/blog/${params.id}`, 20 { 21 headers: { 'X-API-KEY': 'dummyAPI' } 22 } 23 ); 24 return { 25 items:data 26 }; 27 } 28}; 29</script> 30

出ているエラー

GET https://dummy.microcms.io/api/v1/blog/undefined 404
Error: Request failed with status code 404
Uncaught (in promise) Error: Request failed with status code 404

試したこと

_id.vueの方から{ params }${params.id}の記述を取り除くと、一覧ページは表示されるようになりました。
つまり、_id.vueの方のURLがうまく取得できていないのではないかと考えましたが、それをどうやって解決すれば良いかがわかりません。

ご教授いただけますと幸いでございます。

参考にしたサイト

https://microcms.io/blog/create-nuxt-microcms-recruit
https://www.notion.so/microCMS-Nuxt-Jamstack-c7d68e68085a400f8eeb1887e97cdd6f
https://web-niar.com/blog/nuxtjs-microcms-vercel/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

階層の変更

pages/blog.vue → pages/blog/index.vue

コードの変更

vue

1 2// pages/blog/index.vue 3 4<script> 5import axios from "axios"; 6export default { 7 async asyncData() { 8 const{data} = await axios.get( 9 'https://dummy.microcms.io/api/v1/blog', 10 { 11 headers: { 'X-API-KEY': 'dummyAPI' } 12 } 13 ); 14 return { 15 items:data.contents 16 }; 17 } 18}; 19</script> 20

vue

1 2// pages/blog/_id.vue 3 4<script> 5import axios from "axios"; 6export default { 7 async asyncData({ params }) { 8 const { data } = await axios.get( 9 `https://dummy.microcms.io/api/v1/blog/${params.id}`, 10 { 11 headers: { 'X-API-KEY': 'dummyAPI' } 12 } 13 ); 14 return { 15 item:data 16 }; 17 } 18}; 19</script> 20

原因

  • blogディレクトリとblog.vueのぶつかり合い。
  • 記事詳細ページの所得方法の間違い。

 pages/blog/_id.vueのreturn の箇所。

投稿2020/08/14 01:36

progblog

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問