【Node.js活用】nexeでポータブルなExpress.jsサーバーを手軽に持ち歩く


2022/04/28

nexeでスタンドアローンなExpressサーバを立てるコマンドを作成する際のメモです。

なおこの記事で、nexeアプリのビルド環境の導入方法などには触れていませんので、より細かいセットアップの情報は以前の記事の内容でご確認ください。

nexeとExpressを組み合わせることで、node.jsをインストールしていない環境でも、コマンド一つで簡易的なWebサーバーに仕上げられるので、ローカルのテスト環境ツールにもってこいです。

早速以降ではnexeとExpressを使った最軽量なモックWEBサーバーツール・
「Nexe-Expressサーバー」を実装してみます。


Express.jsのtypescriptビルドとnexeアプリビルド

Nodeプロジェクトに、nexeExpress.jsともにインストールされていて、・Typescriptのビルド環境が正常に動作しているものとします。

で、アプリのメインコード・
index.tsを以下のような内容にします。

            
            import express from "express";

const endpoint = 'http://localhost:3000';
console.log(`Nexe-Express server is now running at ${endpoint}!`);

const app = express();
app.get('/', (req, res) => {
    res.send('Hello, local client!');
});
app.listen(3000, () => {});
        
これをtscでTypescriptビルドして、出力されたdist/index.jsを更にnexeアプリビルドに掛けます。

            
            $ tsc
$ nexe dist/index.js --target=linux-x64-14.15.3
        
ここでのターゲットはLinuxOS x64向けです。

ちなみに出来上がったバイナリのサイズは、

            
            $ du -h index
72M     index
        
となってNode.js & Expressがこのサイズに詰まっていると考えれば、かなりコンパクトに感じます。


動作テスト〜CurlでNexe-Expressサーバーにアクセス

では仕上がった実行バイナリを起動させてみましょう。

            
            $ ./index
Nexe-Express server is now running at http://localhost:3000!
        
この状態で、別ターミナルを起動し、このエンドポイントhttp://localhost:3000にGETをリクエストしてみます。

            
            $ curl -XGET http://localhost:3000
Hello, local client!
        
きちんとレスポンスが得られれば、ポータブルなアプリ兼HTTPサーバーとして機能していると思います。めでたしめでたし。

記事を書いた人

記事の担当:taconocat

ナンデモ系エンジニア

主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。