タイトルで終了ではあるのですが、軽く嵌まったのでメモしておきます。
npm から dotenv
をインストールして .env
ファイルに設定を書き込んで利用していた際、意図しない挙動が発生しました。
.env
DEV_MODE=prod # dev, demo, prod
DEV_MODE
なるパラメータに値をセットしてあります。
EJS
<%
const DEV_MODE = process.env.DEV_MODE;
// 略
if (DEV_MODE !== 'prod') {
-%>
<meta name="robots" content="noindex, nofollow">
<%
}
-%>
プログラム( EJS 内の JavaScript )側では、その値によって meta name="robots"
を出力する・しないを分岐しています。
しかし、 .env
で DEV_MODE
を prod
にセットしても meta name="robots"
が出力されてしまいました。何故……。
検証
試しにパラメータを近くで(仮に今は亡き meta name="keywords"
として)出力させてみます。
<meta name="keywords" content="DEV_MODE:prod # dev, demo, prod, ...(略)">
prod # dev, demo, prod
が該当部分。……コメントも値として渡ってきてしまっています。これでは DEV_MODE !== 'prod'
が true
になってしまうわけです。
対処
# DEV_MODE: Please choose from the three parameters below.
# dev, demo, prod
DEV_MODE=dev
値とコメントを別の行にしました。
<meta name="keywords" content="DEV_MODE:prod, ...(略)">
これでコメントが消え、 meta name="robots"
も出力されなくなりました。
いや、迂闊でした……。