Як налаштувати змінні середовища в Node.js
Що таке змінні середовища?
Змінні середовища — це глобальні змінні, що використовуються для визначення середовища, в якому працює Node.
Як отримати змінну середовища Express:
const express = require('express');
const app = express();
console.log(app.get('env')); // Виведе: development
const port = 3000;
app.listen(port, ()=>{
console.log(`App running on port ${port}...`);
});
console.log(app.get('env'));
Цей рядок виведе ‘development’ в консолі, оскільки це значення встановлено в Express.
Виведення:
Змінні середовища Node:
Якщо ви хочете побачити змінні середовища Node, то:
const express = require('express');
const app = express();
console.log(process.env); // Виведе всі змінні середовища
const port = 3000;
app.listen(port, ()=>{
console.log(`App running on port ${port}...`);
});
Це виведе об'єкт, схожий на цей:
{
ALLUSERSPROFILE: 'C:\\ProgramData',
ANDROID_HOME: 'C:\\Users\\rahul.kumar\\AppData\\Local\\Android\\Sdk',
APPDATA: 'C:\\Users\\rahul.kumar\\AppData\\Roaming',
BPPDOMAIN_MANAGER_ASM: 'EdrDotNet, Version+130.0.0.0, Culture+neutral, PublicKeyTkea91',
BPPDOMAIN_MANAGER_TYPE: 'EdrDotNet.EdrAppDomainManager',
CHROME_CRASHPAD_PIPE_NAME: '\\\\.\\pipe\\crashpad_21656_WFMVPELSNEEAIDUV',
COLOR: '1',
COLORTERM: 'truecolor',
CommonProgramFiles: 'C:\\Program Files\\Common Files',
'CommonProgramFiles(x86)': 'C:\\Program Files (x86)\\Common Files',
CommonProgramW6432: 'C:\\Program Files\\Common Files',
COMPUTERNAME: 'BHUKR2820LGKL',
ComSpec: 'C:\\WINDOWS\\system32\\cmd.exe',
DriverData: 'C:\\Windows\\System32\\Drivers\\DriverData',
EDITOR: 'C:\\WINDOWS\\notepad.exe',
GIT_ASKPASS: 'c:\\Program Files\\Microsoft VS Code New\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass.sh',
HOME: 'C:\\Users\\rahul.kumar',
HOMEDRIVE: 'C:',
HOMEPATH: '\\Users\\rahul.kumar',
INIT_CWD: 'D:\\Workspace\\Node-Projects\\Natours\\starter',
LANG: 'en_US.UTF-8',
LOCALAPPDATA: 'C:\\UsersCHDSEZGDC02',
NcpClntDataPath: 'C:\\ProgramData\\Juniper\\SecureConnect',
NcpClntInstallPath: 'C:\\Program Files\\Juniper\\SecureConnect',
NODE: 'C:\\Program Files\\nodejs\\node.exe',
NODE_EXE: 'C:\\Program Files\\nodejs\\\\node.exe',
NPM_CLI_JS: 'C:\\Users\\rahul.kumar\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js',
npm_command: 'start',
npm_config_cache: 'C:\\Users\\rahul.kumar\\AppData\\Local\\npm-cache',
npm_config_globalconfig: 'C:\\Users\\rahul.kumar\\AppData\\Roaming\\npm\\etc\\npmrc',
npm_configUsers\\rahul.kumar\\AppData\\Roaming\\npm',
npm_config_init_module: 'C:\\Users\\rahul.kumar1\\.npm-init.js',
npm_config_local_prefix: 'D:\\Workspace\\Node-Projects\\Natours\\starter',
npm_config_node_gyp: 'C:\\Users\\rahul.kumar\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js',
npm_config_noproxy: '',
npm_config_npm_version: '10.8.2',
npm_config_prefix: 'C:\\Users\\rahul.kumar\\AppData\\Roaming\\npm',
npm_config_registry: 'https://registry.yarnpkg.com',
npm_config_userconfig: 'C:\\Users\\rahul.kumar\\.npmrc',
npm_config_user_agent: 'npm/10.8.2 node/v20.9.0 win32 x64 workspaces/false',
npm_execpath:node_modules\\npm\\bin\\npm-cli.js',
npm_lifecycle_event: 'start',
npm_lifecycle_script: 'nodemon server.js',
npm_node_execpath: 'C:\\Program Files\\nodejs\\node.exe',
npm_package_json: 'D:\\Workspace\\Node-Projects\\Natours\\starter\\package.json',
npm_package_name: 'starter',
npm_package_version: '1.0.0',
NPM_PREFIX_NPM_CLI_JS: 'C:\\Users\\rahul.kumarnpm-cli.js',
NUMBER_OF_PROCESSORS: '8',
OneDrive: 'D:\\rahul.kumar\\OneDrive - Infosys Limited',
OneDriveCommercial: 'D:\\rahul.kumar\\OneDrive - Infosys Limited',
ORIGINAL_XDG_CURRENT_DESKTOP: 'undefined',
OS: 'Windows_NT',
Path: 'D:\\Workspace\\Node-Projects\\Natours\\starter\\nodeNatours\\node_modules\\.bin;D:\\Workspace\\Node-Projects\\node_modules\\.bin;rahul.kumar189\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\@npmcli\\run-script\\lib\\node-gyp-bin;C:\\Program Files\\Eclipse Adoptium\\jdk-17.0.12.7-hotspot\\bin;C:\\Program Files (x86)\\Python38-32\\Scripts\\;system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Microsoft VS Code New\\Microsoft VS Code\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files\\nodejs\\;C:\\Program Files\\PuTTY\\;C:\\Users\\rahul.kumar189\\AppData\\Local\\Android\\Sdk\\platform-tools;C:\\Users\\rahul.kumar189\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\rahul.kumar189\\AppData\\Local\\GitHubDesktop\\bin;C:\\Users\\rahulbin;;C:\\Users\\rahul.kumar189\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin;C:\\Program Files\\MongoDB\\Server\\6.0\\bin;C:\\Users\\rahul.kumar189\\AppData\\Roaming\\npm;',
PATHEXT: '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW;.CPL',
PROCESSOR_ARCHITECTURE: 'AMD64',
PROCESSOR_IDENTIFIER: 'Intel64 Family 6 Model 140 Stepping 1, GenuineIntel',
PROCESSOR_LEVEL: 'ProgramData',
ProgramFiles: 'C:\\Program Files',
'ProgramFiles(x86)': 'C:\\Program Files (x86)',
ProgramW6432: 'C:\\Program Files',
PROMPT: '$P$G',
PSModulePath: 'C:\\Users\\rahul.kumar\\Documents\\WindowsPowerShell\\Modules;C:\\Program Files\\WindowsPowerShell\\ModulesModules;C:\\Program Files (x86)\\Microsoft Purview Information Protection\\Powershell',
PUBLIC: 'C:\\Users\\Public',
PyCharm: 'C:\\Users\\rahul.kumar\\AppData\\Local\\JetBrains\\PyCharm 2022.1\\bin;',
SESSIONNAME: 'Console',
VSCODE_INJECTION: '1',
windir: 'C:\\WINDOWS',
ZES_ENABLE_SYSMAN: '1',
__PSLockDownPolicy: '0'
}
Як налаштувати змінну середовища для Node:
через термінал
$ NODE_ENV=development node app.js
Якщо ви виконаєте цю команду в терміналі, це встановить змінну середовища.
Іноді це може не спрацювати, і не дуже зручно завжди встановлювати змінну середовища через термінал, тому ми створимо конфігураційний файл для налаштування змінної середовища.
config.env
NODE_ENV=development
PORT=3000
USER=rahul.kumar
PASSWORD=123456789
Як підключити цей файл до змінної середовища Node?
або
Як Node.js дізнається ці значення з файлу config.env, щоб встановити їх як змінні середовища?
→ Для цього нам потрібно використати пакет під назвою ‘dotenv’.
Крок 1.
Встановлення dotenv
Команда для встановлення пакету dotenv:
npm i dotenv
Крок 2.
Підключення dotenv та його використання
Функція config приймає шлях до файлу config.env і встановлює всі змінні середовища з цього файлу.
dotenv.config({path: "./config.env" });
Приклад:
const dotenv = require('dotenv');
const express = require('express');
const app = express();
dotenv.config({path: "./config.env" });
console.log(process.env); // вивести всі змінні середовища
app.listen(PORT, ()=>{
console.log(`Додаток працює на порту ${port}...`);
});
Тепер ви можете побачити, що все, що ми встановили як змінні середовища, є на об'єкті середовища Node:
{
ALLUSERSPROFILE: 'C:\\ProgramData',
ANDROID_HOME: 'C:\\Users\\rahul.kumar\\AppData\\Local\\Android\\Sdk',
APPDATA: 'C:\\Users\\rahul.kumar\\AppData\\Roaming',
BPPDOMAIN_MANAGER_ASM: 'EdrDotNet, Version+130.0.0.0, Culture+neutral, PublicKeyToken+da1b3922653ea916',
BPPDOMAIN_MANAGER_TYPE: 'EdrDotNet.EdrAppDomainManager',
CHROME_CRASHPAD_PIPEcrashpad_21656_WFMVPELSNEEAIDUV',
COLORTERM: 'truecolor',
CommonProgramFiles: 'C:\\Program Files\\Common Files',
'CommonProgramFiles(x86)': 'C:\\Program FilesCommon Files',
CommonProgramW6432: 'C:\\Program Files\\Common Files',
COMPUTERNAME: 'BHUKRK502820L',
ComSpec: 'C:\\WINDOWSMicrosoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass.sh',
HOMEDRIVE: 'C:',
HOMEPATH: '\\Users\\rahul.kumar',
LANG: 'en_US.UTF-8',
LOCALAPPDATA: 'C:\\Users\\rahul.kumar\\AppData\\Local',
LOGONSERVER: '\\\\CHDSEZGDC02',
NcpClntDataPath: 'C:\\ProgramData\\Juniper\\SecureConnect',
NcpClntInstallPath: 'C:\\Program Files\\Juniper\\SecureConnect',
NODE_ENV: 'development',
NUMBER_OF_PROCESSORS: '8',
OneDrive: 'D:\\rahul.kumar\\OneDrive - Infosys Limited',
OneDriveCommercial: 'D:\\rahul.kumar\\OneDrive - Infosys Limited',
ORIGINAL_XDG_CURRENT_DESKTOP: 'undefined',
OS: 'Windows_NT',
PASSWORD: '123456789',
Path: 'C:\\Program Files\\Eclipse Adoptium\\jdk-17.0.12.7-hotspot\\bin;C:\\Program Files\\Python310\\ScriptsPython38-32\\Scripts\\;C:\\Program Files (x86)\\Python38-32\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWProgram Files\\Microsoft VS Code New\\Microsoft VS Code\\bin;C:\\Program Files\\Gitplatform-tools;C:\\Users\\rahul.kumar\\AppData\\Local\\Microsoft\\Windowsbin;C:\\Users\\rahul.kumar\\AppData\\Local\\JetBrains\\PyCharm 2022.1\\bin;;C:\\Users\\rahul.kumar\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin;C:\\Program Files\\MongoDB\\Server\\6.0\\bin;C:\\Users\\rahul.kumar\\AppData\\Roaming\\npm;',
PATHEXT: '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW;.CPL',
PORT: '3000',
PROCESSOR_ARCHITECTURE: 'AMD64',
PROCESSOR_IDENTIFIER: 'Intel64 Family 6 Model 140 Stepping 1, GenuineIntel',
PROCESSOR_LEVEL: '6',
PROCESSOR_REVISION: '8c01',
ProgramData: 'CProgram Files',
'ProgramFiles(x86)': 'C:\\Program Files (x86)',
ProgramW6432: 'C:\\Program Files',
PROMPT: '$P$G',
PSModulePath: 'C:\\Users\\rahul.kumar\\Documents\\WindowsPowerShell\\Modules;C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules;C:\\Program Files (x86)\\Microsoft Purview Information Protection\\Powershell',
PUBLIC: 'C:\\Users\\Public',
PyCharm: 'C:\\Users\\rahulPyCharm 2022.1\\bin;',
SESSIONNAME: 'Console',
SNC_LIB: 'C:\\Program Files (x86)\\SAP\\FrontEnd\\SecureLogin\\lib\\sapcrypto.dll',
SNC_LIB_64: 'C:\\Program Files\\SAP\\FrontEnd\\SecureLogin\\lib\\sapcrypto.dll',
SSF_LIBRARY_PATH: 'C:\\Program Files (x86)\\SAP\\FrontEnd\\SecureLogin\\lib\\sapcrypto.dll',
SSF_LIBRARY_PATH_64: 'C:\\Program Files\\SAP\\FrontEnd\\SecureLogin\\lib\\sapcrypto.dll',
SystemDrive: 'C:',
SystemRoot: 'C:\\WINDOWS',
TEMP: 'C:\\Users\\rahul.kumar\\AppData\\Local\\Temp',
TERM_PROGRAM: 'vscode',
TERM_PROGRAM_VERSION: '1.95.2',
TMP: 'C:\\Users\\rahul.kumar\\AppData\\Local\\Temp',
UATDATA: 'C:\\WINDOWS\\CCM\\UATData\\D9F8C395-CAB8-491d-B8AC-179A1FE1BE77',
USER: 'rahul.kumar',
USERDNSDOMAIN: 'AD.INFOSYS.COM',
USERDOMAIN: 'ITLINFOSYS',
USERDOMAIN_ROAMINGPROFILE: 'ITLINFOSYS',
USERNAME: 'rahul.kumar',
USERPROFILE: 'C:\\Users\\rahul.kumar',
VSCODE_GIT_ASKPASS_EXTRA_ARGS: '',
VSCODE_GIT_ASKPASS_MAINMicrosoft VS Code New\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass-main.js',
VSCODE_GIT_ASKPASS_NODE: 'pipe\\vscode-git-87e00d9e8f-sock',
VSCODE_INJECTION: '1',
windir: 'C:\\WINDOWS',
WSLENV: 'WT_SESSION:WT_PROFILE_ID:',
WT_PROFILE_ID: '{61c54bbd-c2c6-5271-96e7-009a87ff44bf}',
WT_SESSION: 'a22a5256-6958-4ee9-93d4-3ad7f9473e9b',
ZES_ENABLE_SYSMAN: '1',
__PSLockDownPolicy: '0'
}
Усі змінні, які ми оголосили у файлі config.env, доступні в цьому об'єкті.
Дякуємо…
Перекладено з: Node.js : Day 10