このブログははてなブログからの移行記事です。

nodeのコード中で環境変数を書き換えたい

そう思って以下の様なことをしてみました。

process.env.LOCAL_ENV = undefined;

/* ~略~ */

if (_.isUndefined(process.env.LOCAL_ENV)) {
  console.log('LOCAL_ENV is not specified');
}

しかし何回やってもprocess.env.LOCAL_ENVにundefinedが入ってることにならない…

process.env.HOGEにはstring型しか入らない

きちんとDocumentに書いてありました。

process Node.js v6.1.0 Manual & Documentation

process.envから生えるオブジェクトをundefinedにしたい場合は何を代入してもstring型になるのでdelete句を使う必要があります。

// 間違い ('undefined'という文字列がセットされるだけ)
process.env.LOCAL_ENV = undefined;

// こうするべき
delete process.env.LOCAL_ENV;

テスト書いてるとき見事にハマりました。。。 よく考えればわかることだった。。。