kokh log

主にフロントエンドの備忘録

Node.js: dotenvなしで.envを指定する

Node.js v20.6.0 から コマンドラインでの環境変数ファイルの指定がbuilt-inしていました。
Command-line API | Node.js v20.14.0 Documentation

これまでは環境変数を指定するには dotenv といった別のモジュールに依存するのが通例でしたが、
--env-file flagをつけることで環境変数を指定することができるようになりました。

$ node --env-file=.env main.js

ただ、 ts-node にはこのフラグがついていません。
そのため、ts-node で適用するには下記のように実行します。

$ node -r ts-node/register --env-file=.env main.ts

-r は指定したモジュールをpreloadするためのフラグです。
Command-line API | Node.js v22.2.0 Documentation

これはあくまでワークアラウンドという感じなので、将来的には ts-node 単体でも指定できるようになりそうです。

(Next.jsといったフレームワークに慣れていると正直フラグなしでも適用されてほしい気持ちになります🥺)

ちなみに、Deno も dotenv をimportして呼び出さないといけないので、built-inではないようです。

import { load } from "https://deno.land/std@0.224.0/dotenv/mod.ts";

const env = await load();
const password = env["PASSWORD"];

Environment variables | Deno Docs

参考にした記事