くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Node.jsでローカルのIPアドレスを取得する(node-ip)

Nuxtみたいに、Expressの起動時に、 ローカルのIPアドレスを表示したいなと思い、
いろいろ調べたときの備忘録。

ℹ Listening on: http://192.168.11.6:3000/

IP(node-ip)という、Node.js用のIPアドレスのユーティリティがあるらしい。
indutny/node-ip: IP address tools for node.js

Nuxt.jsの@nuxt/serverのコードで使われていた。

使い方

まずはインストール。

$ npm i ip
$ npm i -D @types/ip

ip.address()IPアドレスを取得できる。
Nuxtみたいな感じにしてみる。

import ip from "ip";
import express from "express";

const app = express();

const port = Number(process.env.PORT || 8000);
const hostname = process.env.HOST || "0.0.0.0";

app.listen(port, hostname, () => {
  const host = ip.address();
  console.log(`ℹ Listening on: http://${host}:${port}`);
});

おまけ: 標準ライブラリを使った方法

調べてみたときに、最初にヒットしたのはこっちで、
node-ipの中でも使われている方法。

import { networkInterfaces } from "os";

function getIpAddress() {
  const nets = networkInterfaces();
  const net = nets["en0"]?.find((v) => v.family == "IPv4");
  return !!net ? net.address : null;
}

const host = getIpAddress();

以上! 便利(´ω`)