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

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

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

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

Nuxt.js

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

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

2回答

2063閲覧

typeacriptで静的なjsonデータをaxiosで読み込みたいが404エラーが出る

Daniel0801

総合スコア30

Vue.js

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

Nuxt.js

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

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2022/09/06 04:19

前提

Nuxt.js typescriptで静的なjson データを読み込んでページで一旦全データを表示させたい

下記のsteps.ts ファイルで asyncを使用してjsonデータをaxios.getしたデータを返す関数 getJsonDataを記述
vueファイルにてjsonを取得する関数を実行する

実現したいこと

typescriptで取得したjsonデータをフロント側に表示する。後ほどNuxtLinkでpathにそのパラメータを代入して動的にURLを遷移させる

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

Axios 404エラーが表示される

AxiosError {message: 'Request failed with status code 404', name: 'AxiosError', code: 'ERR_BAD_REQUEST', config: {…}, request: XMLHttpRequest, …} code: "ERR_BAD_REQUEST" config: adapter: ƒ xhrAdapter(config) data: undefined env: {FormData: null} headers: {Accept: 'application/json, text/plain, */*'} maxBodyLength: -1 maxContentLength: -1 method: "get" timeout: 0 transformRequest: [ƒ] transformResponse: [ƒ] transitional: {silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false} url: "~/assets/json/step.json" validateStatus: ƒ validateStatus(status) xsrfCookieName: "XSRF-TOKEN" xsrfHeaderName: "X-XSRF-TOKEN" [[Prototype]]: Object message: "Request failed with status code 404" name: "AxiosError" request: XMLHttpRequest {onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, …} response: {data: {…}, status: 404, statusText: 'Not Found', headers: {…}, config: {…}, …} [[Prototype]]: Error

該当のソースコード

・jsonデータを読み込んで丸々返す typescriptファイル

steps.ts

1import axios from 'axios'; 2 3 4export function setGuide() { 5 async function getJsonData() { 6 7 const { data } = await axios.get('~/assets/json/step.json') 8 9 console.log({data}) 10 11 return { 12 data 13 } 14 } 15 16 return { 17 getJsonData, 18 }; 19} 20

・データを表示させたいvueファイル

index.vue

1<template> 2 <div> 3 {{ jsonData }} 4 </div> 5</template> 6<script lang="ts"> 7 import { defineComponent } from '@nuxtjs/composition-api'; 8 import { setGuide } from '~/libs/setups/steps'; 9 import { wrapAsyncData } from '~~/src/libs/error-handling'; 10 11 export default defineComponent({ 12 asyncData: wrapAsyncData(async () => { 13 const { getJsonData } = setGuide(); 14 15 return { 16 jsonData: await getJsonData(), 17 }; 18 }), 19 }); 20</script> 21

試したこと

404エラーなのでtypescript内でのjsonファイルの読み込めていないのかなと思い、相対パスや@/ルートディレクトリにしてみたものの、同様のエラーが表示される

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

読み込みたいjsonファイルデータ(一部省略)

json

1[ 2 { 3 "id": 1, 4 "title": "ご利用手順", 5 "contents": [ 6 { 7 "id": 2, 8 "title": "はじめての方", 9 "contents": [ 10 { 11 "id": 3, 12 "title": "yucacy の使い方", 13 "contents": [ 14 { 15 "id": 4, 16 "title": "項目のタイトル", 17 "contents": [ 18 { 19 "id": 5, 20 "title": "説明のタイトル", 21 "body": "ご利用手順の内容が入ります。ご利用手順の内容が入ります。ご利用手順の内容が入ります。ご利用手順の内容が入ります。" 22 } 23 ] 24 } 25 ] 26 } 27 ] 28 } 29 ] 30 } 31 } 32] 33

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

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

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

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

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

guest

回答2

0

自己解決

SSRなので自分のホストにアクセスする処理が冗長になるので、そのままjsonファイルを埋め込んで使用しました。
axios を使用せずに一旦jsonファイルをそのままインポート

import steps from '~/static/json/steps.json';

投稿2022/09/14 03:46

Daniel0801

総合スコア30

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

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

0

axiosはhttpクライアントです。

Promise based HTTP client for the browser and node.js

httpプロトコルで接続可能なURLにする必要があると思います。

投稿2022/09/06 06:56

Matsumon0104

総合スコア1005

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問