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

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

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

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

199閲覧

next.js、reactで表示されるエラーが解決できない。

kuma9ma

総合スコア2

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2024/03/08 12:59

実現したいこと

spabaseのデータをprismaとnextjsを使ってjson形式で抽出したい。

発生している問題・分からないこと

react

1import BBSCardList from "./components/BBSCardList"; 2 3export default async function Home() { 4 const response = await fetch("http://localhost:3000/api/post", { 5 cache: "no-store", 6 }); 7 8 const bbsAllData = await response.json(); 9 10 return ( 11 <main> 12 <BBSCardList /> 13 </main> 14 ); 15} 16

上記のコードを実行するとエラーが出ます。

エラーメッセージ

error

1Unhandled Runtime Error 2Error: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

該当のソースコード

react

1import BBSCardList from "./components/BBSCardList"; 2 3export default async function Home() { 4 const response = await fetch("http://localhost:3000/api/post", { 5 cache: "no-store", 6 }); 7 8 const bbsAllData = await response.json(); 9 10 return ( 11 <main> 12 <BBSCardList /> 13 </main> 14 ); 15} 16
特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

console.log(response);
をすると以下が表示されます
Response {
[Symbol(realm)]: null,
[Symbol(state)]: {
aborted: false,
rangeRequested: false,
timingAllowPassed: true,
requestIncludesCredentials: true,
type: 'default',
status: 404,
timingInfo: {
startTime: 8651.757667,
redirectStartTime: 0,
redirectEndTime: 0,
postRedirectStartTime: 8651.757667,
finalServiceWorkerStartTime: 0,
finalNetworkResponseStartTime: 0,
finalNetworkRequestStartTime: 0,
endTime: 0,
encodedBodySize: 0,
decodedBodySize: 0,
finalConnectionTimingInfo: null
},
cacheState: '',
statusText: 'Not Found',
headersList: HeadersList {
cookies: null,
[Symbol(headers map)]: [Map],
[Symbol(headers map sorted)]: null
},
urlList: [ URL {} ],
body: { stream: undefined, length: undefined, source: undefined }
},
[Symbol(headers)]: HeadersList {
cookies: null,
[Symbol(headers map)]: Map(9) {
'cache-control' => [Object],
'vary' => [Object],
'x-powered-by' => [Object],
'content-type' => [Object],
'content-encoding' => [Object],
'date' => [Object],
'connection' => [Object],
'keep-alive' => [Object],
'transfer-encoding' => [Object]
},
[Symbol(headers map sorted)]: null
}
}
✓ Compiled /favicon.ico in 45ms (297 modules)

const bbsAllData = await response.json(); の部分で、json形式で返ってきていないからエラーなのかな?と思ったりするのですが、原因が特定できません。画像を添付します。イメージ説明
どうぞよろしくお願いします。

補足

特になし

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

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

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

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

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

naomina121

2024/03/09 20:49

status: 404,ということは該当するフォルダの名前かファイルの名前が間違っている可能性もあるかもしれません・・・。
guest

回答2

0

もし (Pages Routerの) API Route または App Router の Route Handler を使っているなら、記憶は定かでないですが、Server Component でのデータ取得と組み合わせることが不可能だったはずです。

該当する API Router または Route Handler の中の取得処理を Home コンポーネントで直接実行するようにすれば、治るかもしれません。

投稿2024/03/12 13:56

honey32

総合スコア169

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

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

0

ベストアンサー

console.log(response);
をすると以下が表示されます
・・・
status: 404,
・・・
statusText: 'Not Found',

とのことなので、推測するに

  • APIサーバー側で、GET /api/post に対するルーティングが正しく設定されておらず404エラーになり、
  • エラー発生時にはJSONが返されるようになっていない。(のでサーバーのデフォルトのエラー画面のHTMLが返されているためにJSONとしてパースすると失敗してエラーになっている)

という感じかなと思います。
サーバー側が完成しているのかどうか確認するには、

  • ターミナルから curl コマンドを打ってみて確認したり、
  • 開発用に使っているWEBブラウザにHTTPクライアントを入れて

GET http://localhost:3000/api/post
でどのようなレスポンスが返ってくるか確認します。(例:Chromeだったら Talend API Tester とか。)

投稿2024/03/08 23:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問