[英]ts-node compiler is not reading environment variables
我不確定你們中是否有人遇到過同樣的問題,但我遇到了ts-node
和環境變量的問題,非常感謝您的幫助!
我在這里要做的基本上只是用ts-node
運行index.ts
。 而這個index.ts
只是打印出一個環境變量。
索引.ts
import "dotenv/config";
const printEnv = (value: string) => {
console.log(value);
};
printEnv(process.env.PASSWORD);
為了讓env.d.ts
index.ts
在其中定義了變量的類型。
環境.d.ts
declare global {
namespace NodeJS {
interface ProcessEnv {
PASSWORD: string;
}
}
}
export {}
我設置了我的tsconfig.json
、 package.json
和.env
文件,如下所示。
tsconfig.json
{
"name": "ts-env",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"start": "nodemon src/index.ts"
},
"devDependencies": {
"@types/node": "^18.6.1",
"nodemon": "^2.0.19",
"ts-node": "^10.9.1",
"typescript": "^4.7.4"
},
"dependencies": {
"dotenv": "^16.0.1"
}
}
package.json
{
"name": "ts-env",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"start": "nodemon src/index.ts"
},
"devDependencies": {
"@types/node": "^18.6.1",
"nodemon": "^2.0.19",
"ts-node": "^10.9.1",
"typescript": "^4.7.4"
},
"dependencies": {
"dotenv": "^16.0.1"
}
}
.env
PASSWORD=test0123
通過此設置,VSCode 現在能夠在我鍵入process.env.
但是每當我嘗試使用ts-node
運行此應用程序時,它都無法編譯,說process.env.PASSWORD
可能未定義。
這是來自ts-node
的錯誤日志。
TSError: ⨯ Unable to compile TypeScript:
src/index.ts:9:10 - error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.
9 printEnv(process.env.PASSWORD);
我做了相當多的挖掘,但無法找到解決這個問題的正確方法。 如果您能指出我正確的方向,將不勝感激。
環境變量的類型是string | undefined
string | undefined
,這是有道理的,因為它可能會丟失整個.env
文件,或者只是該變量不在其中。
此處的解決方法是將您的 function 定義更改為:
const printEnv = (value: string | undefined) => {
console.log(value);
};
printEnv(process.env.PASSWORD);
或者告訴 TypeScript 變量PASSWORD
肯定存在!
標記,像這樣:
const printEnv = (value: string) => {
console.log(value);
};
printEnv(process.env.PASSWORD!);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.