国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Node.js 終于原生支持 .env 文件了!

開發 前端
從 Node.js v20.6.0 開始,Node.js 支持使用 .env 文件來配置環境變量。配置文件應遵循 INI 文件格式,每一行都包含一個環境變量的鍵值對。通過這個新的特性,就無需再使用第三方模塊來加載 .env 中的環境變量了。

近日,Node.js 團隊核心成員 Ulises Gascón 在社交平臺表示,Node.js 20.6 版本將原生支持 .env 文件,該版本計劃于 8 月 28 日發布。下面就來看看 .env 文件是什么,有什么作用,如果在瀏覽器環境中使用 .env.

Node.js 原生支持 .env

從 Node.js v20.6.0 開始,Node.js 支持使用 .env 文件來配置環境變量。配置文件應遵循 INI 文件格式,每一行都包含一個環境變量的鍵值對。通過這個新的特性,就無需再使用第三方模塊來加載 .env 中的環境變量了。

要使用預定義的配置初始化 Node.js 應用,請使用以下 CLI 命令:

node --env-file=config.env index.js。

例如,當應用初始化時,可以使用 process.env.PASSWORD 訪問以下環境變量:

PASSWORD=nodejs

除了環境變量,這個更改還允許在 .env 文件中直接定義 NODE_OPTIONS環境變量,無需將其包含在 package.json 中。

.env

.env 文件用于配置環境變量。環境變量是在運行應用程序時向操作系統或應用傳遞的值,用于控制應用的行為和設置。.env 文件通常包含敏感信息(如數據庫連接字符串、API 密鑰等),因此它們被排除在代碼版本控制系統之外,以保護這些敏感數據。

.env 文件使用鍵值對的格式,每一行都是一個環境變量的定義。例如:

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=123456
API_KEY=abcdef123456

在 Node.js 中有一個 process全局變量,其中的env屬性可以訪問系統中的環境變量。

在應用中,Node.js 無法自行維護本地環境變量,需要借助第三方庫(如dotenv,它是一個零依賴的模塊)來加載.env文件,并將其中的環境變量注入到 process.env 對象中。通過這種方式,可以輕松地從程序中訪問這些環境變量,而不需要顯式地硬編碼它們。

要通過 dotenv來加載 .env 文件,需要先安裝 dotenv:

npm i -S dotenv

以下是使用 dotenv 庫加載 .env 文件的示例代碼:

require('dotenv').config(); // 加載 .env 文件

console.log(process.env.DB_HOST); // 訪問環境變量
console.log(process.env.API_KEY);

這里,dotenv 庫的 config() 方法會讀取.env文件,并將其中的環境變量加載到 process.env 對象中。然后,可以通過 process.env 對象訪問這些環境變量的值。

使用 .env 文件的好處是,可以根據不同的環境(開發、測試、預發、生產環境等)設置不同的配置值,而不需要直接修改代碼。這樣做可以使應用更加靈活和可移植。

瀏覽器環境

在 Node.js 環境中,可以使用 process.env 來獲取環境變量的值。但是,在瀏覽器環境下,process.env 是不可用的,無法直接在瀏覽器中獲取環境變量的值。

幸運的是,通過使用打包工具,可以將環境變量暴露給瀏覽器運行時環境。下面我們來看一下如何在 Vite 和 webpack 中實現這一目標。

Vite

Vite 通過 import.meta.env 對象來暴露一組預定義的變量:

  • import.meta.env.MODE:值為 'development' 或 'production'。
  • import.meta.env.PROD:在生產模式下為 true。
  • import.meta.env.DEV:在開發模式下為 true。
  • import.meta.env.SSR:一個布爾值,表示應用是否在服務端運行。
  • import.meta.env.BASE_URL:基礎 URL。

此外,Vite 還可以從 .env 文件中加載變量。在內部,Vite 也是使用 dotenv 來實現這一功能。但不需要手動調用與 dotenv 相關的東西:Vite 會自動完成所有操作。

例如,如果有一個如下所示的 .env 文件:

VITE_MY_VAR=value

那么可以在瀏覽器中通過 import.meta.env.VITE_MY_VAR 來訪問這個值,它的結果將是 'value'。

注意,Vite 只會公開以 VITE_ 前綴開頭的變量(但這可以進行配置)。

Vite 在如何訪問環境變量方面有一個詳細的指南:https://cn.vitejs.dev/guide/env-and-mode.html。

Webpack

Webpack 中內置的 EnvironmentPlugin 插件可以用來暴露環境變量。

例如,要暴露 NODE_ENV 環境變量,可以使用以下配置:

// webpack.config.js
const { EnvironmentPlugin } = require('webpack');

module.exports = {
  // ...
  plugins: [
    // ...
    new EnvironmentPlugin(['NODE_ENV'])
  ]
}

如果環境中沒有 NODE_ENV 變量,該插件將拋出錯誤。但可以使用一個普通的 JavaScript 對象作為配置對象(默認值為該對象的值)來為變量分配一個默認值:

// webpack.config.js
const { EnvironmentPlugin } = require('webpack');

module.exports = {
  // ...
  plugins: [
    // ...
    new EnvironmentPlugin({
      NODE_ENV: 'development'
    })
  ]
}

使用上述配置,如果未設置 NODE_ENV 變量,Webpack 會將 process.env.NODE_ENV 默認設置為 'development'。

如果想要在使用 Webpack 打包的項目中使用.env文件,還是需要借助第三方插件 dotenv,安裝之后,在 webpack.config.js 中進行如下配置:

const path = require("path");
const webpack = require('webpack');

// 使用 dotenv 從項目根目錄讀取 .env 文件。
const dotenv = require('dotenv').config( {
  path: path.join(__dirname, '.env')
} );

module.exports = {
  entry: "./src/app.js",
  output: {
    path: path.resolve(__dirname, "public"),
    filename: "app.js",
  },
  module: {
    rules: [
      {
        test: /\.js?$/,
        exclude: /(node_modules)/,
        include: path.resolve(__dirname, "src"),
        use: {
          loader: "babel-loader"
        }
      },
    ]
  },
  plugins: [
    new webpack.DefinePlugin( {
      "process.env": dotenv.parsed
    } ),
  ],
};

通過使用webpack.DefinePlugin,解析并注入整個.env文件的內容,.env 文件中的內容被轉換為 JavaScript 對象并分配給變量process.env。

除此之外,有一個名為 dotenv-webpack 的 webpack 插件,用于加載 .env 文件并將其中定義的環境變量注入到應用中。這樣,就可以在代碼中使用 process.env.VARIABLE_NAME 來訪問這些環境變量的值。要使用 dotenv-webpack 插件,需要按照以下步驟進行設置:

首先,在項目中安裝 dotenv-webpack。可以使用 npm 或者 yarn 進行安裝:

npm install dotenv-webpack

在 webpack 的配置文件中添加以下代碼:

const DotenvWebpack = require('dotenv-webpack');

module.exports = {
  // ...其他的 webpack 配置

  plugins: [
    // 添加 DotenvWebpack 插件
    new DotenvWebpack()
  ]
}

這樣,當運行 webpack 構建時,dotenv-webpack 插件會自動加載 .env 文件并將其中定義的環境變量注入到應序中。可以在項目的不同文件中使用 process.env 訪問這些變量的值。

Webpack 在如何訪問環境變量方面有一個詳細的指南:https://webpack.js.org/plugins/environment-plugin/。

責任編輯:姜華 來源: 前端充電寶
相關推薦

2024-08-28 08:33:15

2025-07-29 00:00:00

2023-09-21 10:09:10

JavaScript數組分組

2013-11-01 09:34:56

Node.js技術

2015-03-10 10:59:18

Node.js開發指南基礎介紹

2019-02-15 10:49:37

Node.jsweb服務器

2013-03-08 09:54:00

BAENode.js百度云

2024-11-18 08:58:26

2025-11-07 00:00:00

2011-09-09 14:23:13

Node.js

2011-11-01 10:30:36

Node.js

2011-09-08 13:46:14

node.js

2011-09-02 14:47:48

Node

2024-04-26 09:03:31

Node.jsCurrent發布版

2012-10-24 14:56:30

IBMdw

2011-11-10 08:55:00

Node.js

2011-11-30 11:32:37

Node.js

2021-12-25 22:29:57

Node.js 微任務處理事件循環

2011-09-08 14:16:12

Node.js

2023-11-24 14:54:03

Node.jsElectronAddon
點贊
收藏

51CTO技術棧公眾號

黄色一级二级三级| 91精品综合久久| 自拍视频在线| 亚洲激情六月丁香| 国产麻豆电影在线观看| 免费视频一区| 91国产在线播放| 欧美不卡在线视频| 久久精品综合网| 国产伦精品一区二区三区视频黑人 | 激情五月综合网| 欧美r级在线观看| 性网站在线看| 亚洲视频一区二区在线| 黄色在线视频网| 欧美国产激情二区三区| 久久99999| 亚洲国产精品传媒在线观看| jizzzz日本| 亚洲精品高清在线观看| 国产免播放器视频| 亚洲精品日韩一| 中文在线观看视频| 欧美午夜片在线看| 日本中文字幕伦在线观看| 欧美老年两性高潮| 成年人黄色大片在线| 一区国产精品视频| 亚洲欧美日本国产| 国产精品高潮呻吟久久av野狼| 视频在线不卡免费观看| 99久久精品久久久久久ai换脸| 亚洲国产一区二区三区高清 | 丁香五六月婷婷久久激情| 中文字幕在线一二| 欧美日韩国产小视频在线观看| 高h视频在线观看| 亚洲精品视频中文字幕| 99视频有精品高清视频| 日韩av手机在线| 欧美理论在线| 日本黄色播放器| 26uuu国产电影一区二区| 国内在线高清免费视频| 欧美色涩在线第一页| free性护士videos欧美| 久久中文精品视频| 欧美日韩一二三四| 久久综合九色99| 99re免费视频精品全部| 午夜影院韩国伦理在线| 欧美性色黄大片| 625成人欧美午夜电影| 国内精品久久久久久久| 欧美网站在线| 僵尸世界大战2 在线播放| 夜夜嗨av一区二区三区四季av| 麻豆影视国产在线观看| 久久久精品日本| 欧美成人首页| www.好吊操| 天天影视涩香欲综合网| 欧美激情护士| 日韩av电影手机在线| 日韩成人av影视| 成人av影视| 精品少妇一区二区三区日产乱码| 欧美视频二区欧美影视| 国产精品免费一区二区| 99热99精品| 午夜在线免费观看视频| 久久99青青精品免费观看| 精品1区2区3区4区| 亚洲天堂av线| 精品久久久久久最新网址| 台湾色综合娱乐中文网| 五月天色一区| 午夜精品福利一区二区蜜股av| 成人爱爱网址| 国产91视觉| 中文字幕第一区第二区| 羞羞视频在线观看不卡| 国产精品久久久久久久久粉嫩av| 国产乱码一区二区三区| 中文字幕欧美一区二区| 一本色道久久综合狠狠躁篇的优点| 国产精品久久久久久久免费观看| 国产96在线 | 亚洲| 91麻豆精品国产综合久久久久久 | 国产亚洲综合视频| 在线看一区二区| 欧美激情99| 国产精品一线二线三线| 在线成人av网站| 精品美女在线视频| 久在线观看视频| 精品免费国产二区三区| 91麻豆精品国产91久久久平台| 97视频在线免费播放| 欧美成人精品二区三区99精品| 久久裸体网站| 97福利电影| 九九热这里只有在线精品视| 麻豆精品视频在线观看免费| a中文在线播放| 成人av色在线观看| 一区二区三区中文免费| 亚洲码欧美码一区二区三区| 精品免费久久久久久久| 欧美一级理论片| 亚洲激情成人| 激情小视频在线观看| 国产精品网红福利| 自拍偷拍亚洲欧美日韩| 北条麻妃在线一区二区免费播放| 每日在线观看av| 尤物精品国产第一福利三区 | 久久国产精品一区二区三区| 欧美日韩国产麻豆| 欧美日韩水蜜桃| 免费福利影院| 国产精品ⅴa在线观看h| 亚洲男人的天堂在线观看| 久久人人爽人人爽人人片av不| 国产又黄又猛视频| 久久久成人精品| 国产亚洲综合色| 成人涩涩网站| 国产视频手机在线播放| 97视频在线观看成人| 中文成人av在线| 欧美亚视频在线中文字幕免费| 国产视频一区二区三区在线播放| 另类少妇人与禽zozz0性伦| 久久久99精品免费观看| 国内精品偷拍| 成本人h片动漫网站在线观看| 国产精品高清网站| 在线这里只有精品| 性欧美xxxx大乳国产app| av小说在线播放| 国产精品12345| 欧美国产视频日韩| 一区二区三区丝袜| 欧美1区免费| 丁香高清在线观看完整电影视频| 樱空桃在线播放| 美女国内精品自产拍在线播放| 亚洲欧洲日韩在线| 欧美日韩中文一区二区| 国产永久av在线| 正在播放91九色| 久久亚洲影音av资源网| 亚洲精品成人悠悠色影视| 亚洲大全视频| 性xxxxfjsxxxxx欧美| 波多野结衣av一区二区全免费观看| 久久这里只有精品99| 欧美成人午夜免费视在线看片| 久久久国产欧美| 国产69精品久久久| 精品久久久久久国产91| 亚洲视频一二| 在线看的毛片| 69久久久久久| 亚洲欧美激情一区二区| 牛牛国产精品| 九九色在线视频| 污污视频网站免费观看| 成人av资源在线播放| 精品国内二区三区| 久久精品欧美日韩精品| 综合国产精品| 精品视频在线一区二区在线| 天天干夜夜干| 亚洲国产精品www| 欧美—级a级欧美特级ar全黄| 狠狠躁夜夜躁久久躁别揉| 麻豆国产精品一区二区三区| 成人春色在线观看免费网站| аⅴ资源新版在线天堂| 欧美综合在线播放| 91成人免费视频| 北条麻妃99精品青青久久| 欧美性xxxxx极品| 国产99久久久国产精品免费看| 狠狠色丁香婷婷综合影院| 在线免费观看的av| 亚洲77777| 国产一区免费| 欧美激情视频在线| 3d成人h动漫网站入口| 国产精品乱人伦| 日韩成人午夜精品| 红桃成人av在线播放| 26uuu亚洲电影| 欧美女子与性| 别急慢慢来1978如如2| 国产欧美在线一区二区| 97视频在线看|