メインファイル上のファイルconfig
を試しています。.env
しかし、どういうわけか動作しませんが、エラーは間違っています。表示されていますundefined
が、すでに存在しています
1回目の試み
require('dotenv').config({ path: `${__dirname}/../.env` })
2回目の試み
import * as dotenv from 'dotenv'
dotenv.config()
3回目のトライ
import 'dotenv/config'
何らかの理由で.env
読み込まれません。
ファイルを実行する
ts-node main.ts
.env ファイル
SESSION_SECRET = uq07nyvn4xadskdg
COOKIE_SECRET = 0k5kb4qi8shhi7u0n
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_USER = root
DB_PASS = root
DB_NAME = db_name
データベース接続
export const db = createPool({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
})
セッション
const sessionD = session({
secret: process.env.SESSION_SECRET,
resave: true,
saveUninitialized: true,
store: new MySQLStore({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
}),
})
ベストアンサー1
dotenv
タイプスクリプトは伝えない何でも.env
実行時に、あなたの中のものをすべて入れるだけですprocess.env
。これによって、何の型も変更されません。
process.env
つまり、次のようなタイプを扱っているようです:
export interface ProcessEnv {
[key: string]: string | undefined;
}
つまり、割り当てられない値に割り当てることはできませんundefined
。
const myVar: string = process.env.WHATEVER
// Type 'string | undefined' is not assignable to type 'string'.
// Type 'undefined' is not assignable to type 'string'.
修正方法は、未定義のケースを処理することです。誰かがファイルを忘れたり.env
、そのエントリの一部を削除したりした場合はどうなるでしょうか? その場合、コードでは何をすべきでしょうか?
おそらく、デフォルトを提供します:
const whatever: string = process.env.WHATEVER ?? 'whatever default'
あるいはエラーをスローするかもしれません:
let whatever: string
if (process.env.WHATEVER) {
whatever = process.env.WHATEVER
} else {
throw new Error("WHATEVER environment variable is not set")
}
TL;DR:undefined
ケースを処理します。