0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Vue.js】xxx/undefinedでInternal Server Error 500エラーになってしまった場合の原因と解決方法

Posted at

概要

Vue.jsでapi/v1/properties/files/undefinedというエラーがDevツールのコンソールに表示されて、Internal Server Error 500になってしまいました。本記事ではこのエラーの原因と解決方法を記載します。

エラーの原因

原因は以下の箇所にありました。

:src="url+'api/v1/properties/files/'+property?.image"

property?.imageundefinedのとき、api/v1/properties/files/undefinedという不正なURLになってしまったのです。

property?.imageは、Vue.jsのセーフナビゲーション演算子(optional chaining operator)を使用していますが、これはpropertyオブジェクトが存在しない場合にプロパティに安全にアクセスするための方法です。

ちなみに、property?.imageという表記は以下のように動作します。
・もしpropertyオブジェクトが存在する場合、そのimageプロパティの値が返される
・もしpropertyオブジェクトが存在しない場合、undefinedが返される

解決方法

以下のようにすると解決します。

:src="url+'api/v1/properties/files/'+property?.image" v-if="property?.image">

これにより、propertyオブジェクトが存在しない場合には<img>要素(または他の要素)自体がDOMに挿入されないため、不正なURLを回避できます。

このコードでは、プロパティ(property)オブジェクトのimageプロパティが存在する場合にのみ、v-ifディレクティブが評価されます。

v-ifディレクティブは、Vue.js において特定の条件が真の場合に、要素を描画するかどうかを制御するためのディレクティブ。その条件が真(存在する場合)の場合にのみ、親要素にバインドされた属性が有効になります。

つまり、プロパティオブジェクトにimageが存在しない場合、この要素はDOMに含まれないことになります。
これによってundefinedのエラーが解決できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?