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

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

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

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

Nuxt.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

3567閲覧

Nuxt.jsでstatic画像が表示されない

irifune

総合スコア0

Vue.js

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

Nuxt.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/08/11 14:31

前提・実現したいこと

Nuxt.jsを使用してホームページを作成しているのですが、
staticディレクトリに保存している画像が正しく読み込まれません。
現在、OGPの設定を行っており、
[og:image]の設定にstaticディレクトリに保存した[img/ogp.jpg]を
適用させ、シェアデバッガーで確認したところエラーとなってしまいました。

そもそもstaticディレクトリに保存された同画像を
imgタグで表示させようとすると
開発環境では正しく表示されるのですが、
本番へデプロイすると画像が表示されないという状態になっております。

私としても調べたつもりでしたが、
答えにたどり着くことができなかったため質問させてください。

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

シェアデバッガーでOGPの設定状況を確認したところ以下のエラーが表示されました。

https://***ドメイン***.com/img/ogp.jpgのダウンロード中にエラー(HTTP応答コード: 404)が発生しました

本番にデプロイしたサイトを検証ツールで確認したところ、Networkタグから[favion.ico]のエラーも出ておりました。
こちらも同じくstaticに保存している画像となります。

Request URL: https://***ドメイン***.com/favicon.ico Request Method: GET Status Code: 404 Remote Address: 76.76.21.21:443 Referrer Policy: strict-origin-when-cross-origin

該当のソースコード

nuxt.config.jsのコードは以下となります。

JavaScript

1export default { 2 ssr: false, 3 target: 'static', 4 5 head: { 6 title: "***タイトル***", 7 titleTemplate: "***タイトルテンプレート***", 8 htmlAttrs: { 9 lang: "ja", 10 prefix: 11 "og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# website: http://ogp.me/ns/website#" 12 }, 13 meta: [ 14 *** 一部省略 *** 15 { hid: "og:type", property: "og:type", content: "article" }, 16 { hid: "og:url", property: "og:url", content: "https://***ドメイン***.com" }, 17 { name: "twitter:card", content: "summary_large_image" }, 18 { hid: "note:card", property: "note:card", content: "summary_large_image" }, 19 { hid: "og:site_name", property: "og:site_name", content: "**サイト名**" }, 20 { hid: "og:title", property: "og:title", content: "***タイトル***" }, 21 { hid: "og:image", property: "og:image", content: "https://***ドメイン***.com/img/ogp.jpg" }, 22 { hid: "twitter:image", name: "twitter:image", content: "https://***ドメイン***.com/img/ogp.jpg" }, 23 { hid: "og:description", property: "og:description", content: "***文章***" } 24 ], 25 link: [ 26 { rel: "icon", type: "image/x-icon", href: "/favicon.ico" }, 27 { rel: "apple-touch-icon", href: "/icon.png" } 28 ] 29 } 30}; 31

また、staticディレクトリの画像をページで利用する際は、ドキュメントに従って以下のように書いております。
しかし、開発環境では確認できても本番にデプロイすると表示されません。

Vue

1<template> 2 <div> 3 <img src="/img/ogp.jpg" alt=""> 4 </div> 5</template>

試したこと

・[https://ドメイン.com/img/ogp.jpg]を直接ブラウザで入力しましたが画像が表示されませんでした。
・[http://localhost:3000/img/ogp.jpg]であれば、開発環境で確認できました。
・ページ生成の前にpwa関連のキャッシュ画像が削除されるようpackage.jsonのgenarateを以下に書き換えた。

JavaScript

1{ 2 "name": "***サイト名***", 3 "version": "1.0.0", 4 "private": true, 5 "scripts": { 6 "dev": "nuxt", 7 "build": "nuxt build", 8 "start": "nuxt start", 9 "generate": "rm -r /node_modules/.cache/pwa/icon && nuxt generate" 10 } 11}

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

フレームワーク : Nuxt.js(@nuxt/cli v2.15.7)
ホスティング先 : Vercel
データベース等 : Google Firestore と CloudStorage

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

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

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

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

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

k4a

2021/08/11 15:10

・`generate`した成果物に`static`の中にあったファイルやフォルダは存在していますか? ・`generate`した成果物をローカルWEBサーバー(LiveServer等)でホストした際は正しく動作しますか?
irifune

2021/08/13 12:15

ご質問を見ていただきありがとうございます。 回答申し上げます。 ご不明点等ございましたら、何なりおっしゃってください。 > `generate`した成果物に`static`の中にあったファイルやフォルダは存在していますか? 開発環境では存在しております。 本番環境の方ではファイルが存在するか確認する方法がわからず検証できませんでした。 確認方法としては、開発環境で、[node_modules/.bin/nuxt generate]を行い、 生成されたdistディレクトリを確認しました。 > `generate`した成果物をローカルWEBサーバー(LiveServer等)でホストした際は正しく動作しますか? ローカルWEBサーバ(http://localhost:3000/)上では、正しく動作しているようです。 具体的には、imgタグのsrc属性に指定することで正しく表示されております。 この状態で、マージし、再デプロイをしても本番環境では表示されておりませんでした。 また、同じくstaticディレクトリで管理している[favicon.ico]画像も正しく使用されているようで [http://localhost:3000/favicon.ico]でアクセスすると画像が表示されております。
FKM

2021/08/20 09:03

これを試しましたか?確か.でカレントパス指定が必要だったはず… <img src="./img/ogp.jpg" alt="">
irifune

2021/08/21 08:23

ご質問を見ていただきましてありがとうございました。 ご教示いただいた方法を試したところ、 開発環境時点でエラーとなってしまい、 正しくコンパイルすることができませんでした。 公式ドキュメントを確認したところ、 カレントパス指定する方法を見つけられなかったため、 コミットすることを断念しました。 開発構築時点で設定ミスがあったのか FKMさんと同じ結果にならずすみませんでした。 https://ja.nuxtjs.org/docs/2.x/directory-structure/static
guest

回答1

0

package.json

"generate": "rm -r /node_modules/.cache/pwa/icon && nuxt generate"

これは /node_modules/.cache/pwa/icon ではなく ./node_modules/.cache/pwa/icon としたかったんじゃないでしょうか。(.が抜けていてカレントディレクトリではなくルートディレクトリをみてしまっています)

おそらくpushするとどこかでビルドしてDeployするような作りになっているのだと思うのですが、 /node_modules が存在しないので rm が失敗して、後続の && nuxt generate まで実行されていないのではないでしょうか。

(追記:「まだ回答を求めています」としていますが、この回答についてどうだったか確認していただきたいです……)

投稿2021/08/25 13:52

編集2021/09/06 12:23
aaharu

総合スコア441

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

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

irifune

2021/09/06 13:05

回答ができておらず、失礼いたしました。 ご教授いただいた方法を以下の通り、試してみました。 ``` "generate": "rm -r ./node_modules/.cache/pwa/icon && nuxt generate" ``` /node_modulesの前に「.」をつけてカレントディレクトリを見るように変更し、 再デプロイし、シークレットウィンドウで確認しましたが、 正しく読み込みができませんでした。 念のため、iconを削除するコマンドをなくして元の状態でも実施しました。 ``` "generate": " nuxt generate" ``` しかし、同じくstatic画像は読み込まれておりませんでした。 せっかくご教授いただいたのにも関わらず、 結果が変わらなかったこと、ご回答が遅れましたこと 本当に申し訳ございませんでした。
aaharu

2021/09/06 13:18

承知しました。 Vercelへのデプロイ周りがあやしいのかなと思うのですが、デプロイについてどのような設定をしているかわかりますか? 特に何もせずデフォルトのままでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問