herohoro / easy-notion-blog-02

Easy to start your Notion Blog with Official API
https://easy-notion-blog-otoyo.vercel.app/blog
MIT License
1 stars 0 forks source link

アルパカ先生へ_いいねボタンが本番環境では反応しない件 #44

Closed herohoro closed 1 year ago

herohoro commented 1 year ago

経緯

37 による不具合

✅ 開発環境ではNotionDBのLike列に値が入る ❌ 本番環境では入らない


本題

Vercel functionの詳細ログです

スクリーンショット 2022-07-14 14 01 09

何卒お願いしますm( )m

otoyo commented 1 year ago

特にエラーメッセージは出てなさそうですね。週末に見てみますね。

otoyo commented 1 year ago

スクリーンショット 2022-07-14 22 30 19 いいねボタンのところにいいね数が表示されていますが、本番環境でいいねボタンを押したときにNotion DBの Like 列は増えてますでしょうか?

DBのLike列の数は増えているのに、スクショ部分の表示の数字が増えないということでしょうか?

herohoro commented 1 year ago

言葉足らずですみません(´;ω;`)

いいねボタンを押す 👇 NotionのLike列に数が増えない

って意味です。 スクショの部分の表示の数字は...開発環境でもボタンを押しても⌘Rするまで値は増えない状態なのでこれはいいかなと思ってます😵


開発環境で確認した数値が分かりにくくしてしまっている気がしてきたので一旦Like列を空白にしてみました。。。

otoyo commented 1 year ago

https://github.com/herohoro/easy-notion-blog-02/blob/9a15b2b20ed6f05d86d0d35deca3d43bbaab2e9c/src/lib/notion/client.ts#L568-L578 L575に console.log(result) を入れてデプロイして、もう一度同じ方法でログを見てみましょうか。

herohoro commented 1 year ago

commit後vercelにエラーが表示され、functionにたどり着けておりません😵

limited.....

スクリーンショット 2022-07-16 2 03 57

少し時間をおいてから再度deployするとReadyに無事になりました。

スクリーンショット 2022-07-16 2 21 53
otoyo commented 1 year ago

このログ以外には出ていなかったでしょうか?

otoyo commented 1 year ago

もし他にログが出ていないようでしたら、追加した console.log(result) を戻して(消して)、 https://github.com/otoyo/notion-blog/pull/92 の差分を適用し、再度いいねを押してログを見ていただけますでしょうか?

herohoro commented 1 year ago

ログ出ていなかったので差分してみます!!!!

herohoro commented 1 year ago

タイトルミスりましたが.... https://github.com/herohoro/easy-notion-blog-02/commit/1062b6f4b2bbce58eecedcfa76b2a2fa67af1fe2 👇

スクリーンショット 2022-07-16 11 22 11

(´;ω;`)

もう一度他の記事を開いてイイネボタンを押してみるとエラーが出てはいます....(出たり出なかったりです...)

スクリーンショット 2022-07-16 11 26 52
otoyo commented 1 year ago

ログありがとうございます。今出ているログは直接原因があるかどうか断定できないですね。 おそらく一筋縄ではいかない問題だと思うので自分の方で午後詳しく調査してみますね。

herohoro commented 1 year ago

ありがとうございます(´;ω;`)

不思議ですね。アルパカ先生はLike列動いているんですよね???

otoyo commented 1 year ago

自分の環境では動いてますね。 ローカルで動くこと、Google Cloudで動くことが確認できているので、Vercelでも動くか調べようと思ってます。

herohoro commented 1 year ago

!!!そういえばアルパカ先生はGoogle Cloudでしたものね( ゚д゚)ハッ!

お手数おかけしまくりですがいつもありがとうございます(´;ω;`)

otoyo commented 1 year ago

@herohoro 原因がわかりました。コードが良くなかったです。 src/pages/api/like.tstry のところを下記のように書き直してみてください。

  try {
    const post = await getPostBySlug(slug as string)
    if (!post) {
      throw new Error(`post not found. slug: ${slug}`)
    }

    await incrementLikes(post)

    res.statusCode = 200
    res.end()
  } catch (e) {
    console.log(e)
    res.statusCode = 500
    res.end()
  }
herohoro commented 1 year ago

( ゚д゚)ハッ! !!!!!!!!!!!!!!!! アルパカ先生!!!!!!!!!!

動いてます!!!!!!!!!!

すごい〜〜〜〜〜〜〜〜〜〜〜 ありがとうございます〜〜〜〜

スクリーンショット 2022-07-16 17 26 03

blocs.tsのコードのようにgetPostBySlugを変数に入れていなかったことが原因...ということですか????

otoyo commented 1 year ago

いえ、非同期処理と通信の話になるんですが、Notion API へのリクエストの通信が終わる前にブラウザへレスポンスし接続が終了されていたことが原因でした。

エラー内容としては以下です。

FetchError: request to https://api.notion.com/v1/databases/158bd90116004cd19aca26ad88cb5c07/query failed, reason: Client network socket disconnected before secure TLS connection was established
    at ClientRequest.<anonymous> (/var/task/node_modules/node-fetch/lib/index.js:1491:11)
    at ClientRequest.emit (events.js:400:28)
    at TLSSocket.socketErrorListener (_http_client.js:475:9)
    at TLSSocket.emit (events.js:400:28)
    at emitErrorNT (internal/streams/destroy.js:106:8)
    at emitErrorCloseNT (internal/streams/destroy.js:74:3)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  type: 'system',
  errno: 'ECONNRESET',
  code: 'ECONNRESET'
}
herohoro commented 1 year ago

調べたこと✍(......ひとりごとです)

https://twitter.com/mineral_30/status/1548330034288807936