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

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

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

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

Nuxt.js

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

Yarn

Yarnは、Facebook/Exponent/Google/Tildeが開発したJavaScriptのパッケージマネージャ。npmよりもインストールが速く、厳密にモジュールのバージョンを固定できるなど、npmの問題を解決。npmと互換性があり、同じpackage.jsonを使用できます。

API

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

Q&A

解決済

1回答

8075閲覧

Nuxt.jsのCannot read property 'fields' of undefinedを解決したい。

yata_

総合スコア5

Vue.js

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

Nuxt.js

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

Yarn

Yarnは、Facebook/Exponent/Google/Tildeが開発したJavaScriptのパッケージマネージャ。npmよりもインストールが速く、厳密にモジュールのバージョンを固定できるなど、npmの問題を解決。npmと互換性があり、同じpackage.jsonを使用できます。

API

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

0グッド

0クリップ

投稿2020/01/21 12:11

Nuxt.jsのCannot read property 'fields' of undefined"を解決したい。

nuxt.js、contentful apiを使って簡単なブログの様なものを作成しようとしています。
ローカル環境でプロジェクトを起動させようとした際に、ターミナルでは正常に作動した様に見えるのですが、実際にローカルで開いてみるとエラーが発生します。
Cannot read property 'fields' of undefined"というのがいくら調べても曖昧な回答しか得られず、何がどうダメなのかが分からないので、教えて頂けるととてもありがたいです。

発生している問題・エラーメッセージ

######ターミナル上で表示されたエラー

ERROR [Vue warn]: Error in render: "TypeError: Cannot read property 'fields' of undefined"

found in

---> <Pages/index.vue> at pages/index.vue

<Nuxt> <Layouts/default.vue> at layouts/default.vue <Root>

######ローカルのページで表示されるエラー(表示されている文を書き写したものになります。)

Cannot read property 'fields' of undefined

pages/index.js:146:60(しかし、pagesの下にindex.jsは無く、index.vueとReadme.mdがあるのみです)

pages/index.js
Missing stack frames

pages/index.vue:20:

pages/index.vueopen in editor
:key="i"
cols="12"
sm="6"
lg="4"
xl="3"
>
<v-card max-width="400" class="mx-auto" >
<v-img

該当のソースコード

#####pages/index.vue

vue

1<template> 2 <v-container fluid> 3 <v-row 4 justify="center" 5 > 6 <v-col 7 cols="12" 8 sm="11" 9 md="10" 10 xl="8" 11 > 12 <v-row v-if="posts.length"> 13 <v-col 14 v-for="(post, i) in posts" 15 :key="i" 16 cols="12" 17 sm="6" 18 lg="4" 19 xl="3" 20 > 21 <v-card 22 max-width="400" 23 class="mx-auto" 24 > 25 <v-img 26 :src="post.fields.image.fields.file.url" 27 :alt="post.fields.image.fields.title" 28 :aspect-ratio="16/9" 29 max-height="200" 30 class="white--text" 31 > 32 <v-card-title class="align-end fill-height font-weight-bold"> 33 {{ post.fields.title }} 34 </v-card-title> 35 </v-img> 36 37 <v-card-text> 38 {{ post.fields.publishDate }} 39 </v-card-text> 40 <v-list-item three-line style="min-height: unset;"> 41 <v-list-item-subtitle> 42 {{ post.fields.body }} 43 </v-list-item-subtitle> 44 </v-list-item> 45 <v-card-actions> 46 <v-spacer /> 47 <v-btn 48 text 49 color="primary" 50 > 51 この記事をみる 52 </v-btn> 53 </v-card-actions> 54 </v-card> 55 </v-col> 56 </v-row> 57 <div v-else class="text-center"> 58 投稿された記事はありません。 59 </div> 60 </v-col> 61 </v-row> 62 </v-container> 63</template> 64<script> 65import client from '~/plugins/contentful' 66 67export default { 68 async asyncData ({ env }) { 69 let posts = [] 70 await client.getEntries({ 71 content_type: env.CTF_BLOG_POST_TYPE_ID, 72 order: '-fields.publishDate' 73 }).then(res => (posts = res.items)).catch() 74 return { posts } 75 } 76} 77</script> 78

試したこと

申し訳ないのですが、Cannot read property 'fields' of undefinedやその周辺のキーワードで検索しただけです。3時間ほどかけて検索や関連のエラーの対策なども検索してみましたが、はっきりとしたワードや解決策が得られず、今回質問させていただいています。
どうかよろしくお願いします。

補足情報(FW/ツールのバージョンなど)

使っているもの
Macbook2017
Nuxt.js v2.11.0
yarn 1.21.0
contentful api

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラー文の一行目を訳するなら、

undefined のプロパティ 'fields' を読むことができません。

となります。

つまり、何かの変数の 'fields' プロパティにアクセスしようとした際に、その変数が undefined だったことが発覚してエラーとなっています。

ご提示のコードの中で言うと、post.fieldspost か、post.fields.image.fieldsimage のいずれかが undefined のために例外が発生しているものと思われます。

ログ出力するなり、vue-devtool のブラウザ拡張を利用するなりして原因箇所を特定してください。

ちなみに、index.js は nuxt 付属のコンパイラがあなたの pages/index.vue をコンパイルして生成したファイルだと思います。

投稿2020/01/21 15:31

R.Mizukami

総合スコア1086

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

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

yata_

2020/01/26 12:25

遅くなりましたが、ありがとうございます! 教えてくださった内容を試してみます!
yata_

2020/01/26 13:28

ログ出力とvue-devtoolsに関してなのですが、ログ出力に関しては検索したのですが自分の理解力がなくてできず、vue-devtoolsは導入はしてみたものの、エラーが出る画面では使用できませんでした。 何回も質問してしまい申し訳無いのですが、このような場合どうしたら良いでしょうか?
R.Mizukami

2020/01/26 15:31

一端疑わしい箇所をまとめてコメントアウト等で無効化することでとりあえず動くようになると思います(例えば <v-row> を丸々コメントアウトする等)。 その状態で、適当なデバッグ用のボタンをつけるとか、 created にログ出力を行うメソッドをつけるとか、vue-devtool を使うとか、なんでもいいですが質問者さまが理解できる方法で vue インスタンスのプロパティ $vm.posts[0] や $vm.posts[0].fields.image などがどうなっているか( undefined になっていないか)確認すれば、原因が分かると思いますということです。
yata_

2020/01/31 13:58

ありがとうございます! コメントアウトしてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問