Vercel は package.json の main フィールドを認識せず、 app.js を実行することはありません。また Vercel はサーバーレスなプラットフォームであり、 http モジュールや Express などのサーバーを使ったアプリケーションをデプロイするには向いていません。基本的には Next.js 他の Vercel に対応したフレームワークを使ってください。
どうしてもサーバーを使うのであれば、サーバーレスファンクションとしてサーバーを実行する方法があります。詳しくは以下のページを参照してください。
今のような齟齬が発生している原因は、 Vercel が以下の手順でビルドとデプロイを実行しているためです。
- package.json で何らかのフレームワークをインストールしていることが検出されれば、そのフレームワークに合わせたビルドコマンドを実行する。検出されなければカスタムビルドコマンドを実行する(デフォルトでは未設定で、何もしない)。
- フレームワークに応じた生成物ディレクトリの内容をデプロイする。フレームワークが検出されなければ public ディレクトリの、それもなければルートディレクトリの内容を生成物とする。
今回はフレームワークをインストールしていないので手順1では何も実行されず、手順2でルートディレクトリの内容がデプロイされます。デフォルトのページは index.html なので、 Vercel で /
を開くとその内容が表示されます。
ビルドとデプロイの設定については以下のページに書いてあります。