Node.js: 10-й день пригод

Як налаштувати змінні середовища в Node.js

pic

Що таке змінні середовища?

Змінні середовища — це глобальні змінні, що використовуються для визначення середовища, в якому працює 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.

Виведення:

pic

Змінні середовища 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

Leave a Reply

Your email address will not be published. Required fields are marked *