簡體   English   中英

ts-node 編譯器沒有讀取環境變量

[英]ts-node compiler is not reading environment variables

我不確定你們中是否有人遇到過同樣的問題,但我遇到了ts-node和環境變量的問題,非常感謝您的幫助!

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.jsonpackage.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM