何らかの理由で、パッケージを更新したり、yarn.lock を再調整したりすると、本番環境で NextJS (Vercel でホストされている) の API 呼び出しが失敗します。すべての API 呼び出し (単純な hello world であっても) は、インデックス ファイルと同様の HTML を返します。この問題の原因となるパッケージは、クライアント UI ライブラリである Mantine を更新することです。ただし、すべてのパッケージを特定のバージョン番号にロックし、yarn.lock がまったく変更されない場合でも、この問題が発生することに気付きました。
これは Vercel ログに表示されるエラーですが、Memberstack は認証の管理を担当するクライアント パッケージであるため、あまり役に立ちません。そして、私はこのパッケージをクライアントページでのみ使用します。
リーリーpackage.json ファイルは次のとおりです:
リーリーyarn.lock を削除してすべてのパッケージを再インストールしようとしましたが、これによって実稼働環境の API 呼び出しでもエラーが発生しました。唯一有効なのは、以前実稼働環境で動作していた同じyarn.lockファイルを直接コピーし、デプロイ時に使用することです。
つまり、基本的に、yarn.lock ファイルには触れられません。そうしないと実稼働環境が破壊されるか、特定のパッケージのみに触れることができます。
インストールしたパッケージに問題があるかどうかを確認しようとしています。パッケージをインストール/アップグレードするときに、yarn で何かする必要がありますか?それとも、これは NextJS と私が使用しているいくつかのパッケージとの間の互換性の問題でしょうか?
/var/task/node_modules/@memberstack/dom/lib/methods/index.js:45:5
がwindow
にアクセスしようとしているようですが、NextJS が原因ですサーバー側レンダリング (SSR) が実行されますが、おそらく未定義です。window を呼び出す前に
typeof window === unknown
を追加するか、NextJS の dynamic package を使用してメンバースタックをインポートするときに SSR を無効にすることをお勧めします。