皆さん、こんにちは。私の名前は Asim Khan です。現在、Meta Melon でフルスタック開発者を務めています。最近、結婚モバイルおよび Web アプリケーションである Naseebi.com のプロジェクトに取り組んでいるときに、イライラする問題に遭遇しました。この問題には Node.js の punycode モジュールの非推奨が関係していたので、私の経験と解決策を共有したいと思います。
アプリケーションでプロファイル作成機能を作業中に、502 Bad Gateway エラーが発生しました。 AWS EC2 のサーバー ログを確認したところ、次の警告が見つかりました:
コード内で Punycode を直接使用したことがなかったので、これは奇妙でした。しかし、package-lock.json ファイルを調べたところ、それがプロジェクト内のどこかに依存関係として含まれていることがわかりました。当時の Node.js のバージョンは v22.0.0 でした。 v20.9.0、さらには v18.18.0 にダウングレードしようとしましたが、警告は引き続き表示されました。
punycode モジュールは Node.js バージョン 21 で非推奨になりました。これを解決するには、推奨されるユーザーランドの代替手段である punycode.js に置き換える必要がありました。ただし、ユーザーランドモジュールをインストールするだけでは効果がないようです。
最終的に問題を解決するために私がとった手順は次のとおりです:
最新の Node.js バージョンを使用することに特にこだわりがない場合、簡単な解決策は 21 より前のバージョンにダウングレードすることです。
npm ls punycode を実行すると、punycode をまだ使用している依存関係を特定できます。
リーリー
ajv の更新: package.json ファイル内の ajv を更新しました。
リーリー
whatwg-url の更新: whatwg-url も更新しました。
リーリー
3.警告を抑制する (一時的な修正)
package.json スクリプトで警告を抑制できます:
リーリー
4. pm2 を使用してアプリケーションを管理します
最後に、2 つのクラスターのうち 1 つがダウンしていることに気づき、pm2 でアプリケーションを管理するためにプロジェクト ルートに Ecosystem.config.js ファイルを追加しました。
リーリー
以上がNode.js の「Punycode モジュールは非推奨です」問題の解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。