フロントエンド開発で調べたこと
next-authでemail変更について
- 自前で変更申請のテーブルを持って、tokenで管理することにした
マウスが離れた時の動作
getTime()メソッドが使えなくても、Data.parse(date.toString())すると、unixtimeに変換できる。
スナックバー
強制レンダリングが必要だったので、uuidを渡してuseStateに保持して別のuuidが渡った時に再レンダリングされるようにした。
GTM追加
noscript tag
mixpanel
環境ごとに設定
next
-
async sendVerificationRequest
とする(たぶんこっちが重要) - 関数を分けずに
sendVerificationRequest
の中で直接transporter.sendMail
をcallする(関係ないかも)
EmailProvider({
server: {
host: process.env.HOST,
port: process.env.PORT,
secure: true,
auth: {
user: process.env.USER,
pass: process.env.PASS,
},
},
from: process.env.FROM,
async sendVerificationRequest({
identifier: email,
url,
provider: { server, from },
}) {
const { host } = new URL(url);
const transporter = createTransport(server);
const result = await transporter.sendMail({
to: email,
from: from,
subject: 'title',
text: text({ url, host }),
html: html({ url, host }),
})
const failed = result.rejected.concat(result.pending).filter(Boolean)
if (failed.length) {
throw new Error(`Email(s) (${failed.join(", ")}) could not be sent`)
}
},
}),
- これは役に立った。edgeがなくて、experimental-edgeなのが気になった。
- n=2にすると生成結果が混ざるのか?なんか文字の並びがカオスになるので、とりあえず1でやる。
Building a GPT-3 app with Next.js and Vercel Edge Functions – Vercel
- SSEがnextでコンパイルエラー。webpackでts-loaderを設定すると通るらしいけど、できなかったので諦め。
Streaming GPT-3 Responses with Elixir and LiveView
https://github.com/transitive-bullshit/chatgpt-api
- 読んでない
これベースにした
権限設定:https://zenn.dev/yamatatsu/books/aws-cdk-documentation-jp/viewer/12-concepts-permissions
非同期で呼びたいなら:https://qiita.com/suetake/items/3fc945a380af65ecf82d
V3でjson変換:https://dev.classmethod.jp/articles/js-dynamodb-json-marshall-unmarshall/
- dynamoの書き込みをloopの中に書くとキューいんぐ?されて次リクエスト時点まで待機される。みたいな。結構ハマって辛い。
- 非同期にすると、apigatewayのプロキシインテグレートをfalseにしないと 500が返ってきて、それを自力で設定しようとすると、bodyが渡せなくて辛い。lambda call lambda したほうが簡単。
ブロックeditorとdeepLの拡張機能が干渉する問題を回避する。
発火するタイミングはediorを含むコンポーネントが再描画されるタイミングにする。
// 副作用があるためdeepl-inline-translate拡張機能を削除する
useEffect(() => {
if (typeof document !== 'undefined') {
document.querySelector("deepl-inline-translate")?.remove();
var elements = document.getElementsByTagName('deepl-inline-translate')
while (elements.length) {
elements.item(0)?.remove()
}
}
}, [editorJS.current, editorData])
stripeのtransactionとtypeについて
Interactive transactions are available in the following versions of Prisma:
Interactive transactions are generally available from version 4.7.0.
type: https://github.com/prisma/prisma/issues/10880
import {Prisma } from '@prisma/client';
function sample(tx: Prisma.TransactionClient)
txの中でforを使うとエラーが発生する
forEachの非同期処理
- 11個でもできた
-
promises: any
とした