vue.jsの画像読み込みについて質問させていただきます。
メンバー一覧ページを実装したく、あるディレクトリに配置したmember_xx.png
という形式の画像をメンバーの人数分だけループで読み込みサムネイルの一覧を表示させようとしています。
pug
1router-link(:to="{path:'/people/' + peopleId}" v-for="peopleId in people_length") 2 img.people__img(:src="image_path(peopleId)" @error="image_load_error")
export default { name: 'people', props: ['text'], data() { return { people_length: this.text.people.peoples.length, } }, methods: { // 画像が取得出来なかった場合の代替画像 image_load_error(e) { e.target.src = "no-image.jpg" }, image_path: function(id) { return require('@/assets/people/member_' + id + '.png') } }, }
しかし、下記のエラーコードの通り、画像が読み込めない箇所でエラーが入り、想定したような(代替画像として
出力)処理になりません。
この場合では、./member_6.png
の写真はまだ存在しないため、代替画像を配置したいです。
vue.esm.js?a026:1828 Error: Cannot find module './member_6.png' at webpackContextResolve (eval at ./src/assets/people sync recursive ^./member_.*.png$ (app.js:2775), <anonymous>:22:11) at webpackContext (eval at ./src/assets/people sync recursive ^./member_.*.png$ (app.js:2775), <anonymous>:16:11) at VueComponent.image_path (People.vue?0b6c:52) at eval (eval at ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6c2f8cc7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/pug-plain-loader/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/People.vue?vue&type=template&id=387ef93f&lang=pug& (app.js:1283), <anonymous>:25:39) at Proxy.renderList (vue.esm.js?a026:3835) at Proxy.render (eval at ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6c2f8cc7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/pug-plain-loader/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/People.vue?vue&type=template&id=387ef93f&lang=pug& (app.js:1283), <anonymous>:18:17) at VueComponent.Vue._render (vue.esm.js?a026:4649) at VueComponent.updateComponent (vue.esm.js?a026:2895) at Watcher.get (vue.esm.js?a026:3265) at new Watcher (vue.esm.js?a026:3254)
このように、読み込み失敗がうまくハンドリングできない原因はなぜでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。