#javascript #visual-studio-code #vscode-settings #vscode-debugger #launch
Вопрос:
Может ли сценарий JavaScript отлаживаться и/или запускаться с помощью VSCode с помощью Node.js знаете, какая конфигурация запуска использовалась для его запуска?
Что-то вроде:
var myLaunchConfigName = somehow_get_my_config() console.log( 'I was launched by ' myLaunchConfigName )
Я искал, но не мог найти способ.
Комментарии:
1. добавьте переменную среды в конфигурацию запуска
2. Сюда? «env»: { «MY_LAUNCH»: «name_of_config» }
3. да, можете ли вы получить доступ к этой переменной среды в сценарии
Ответ №1:
Следуя предложению rioV8, вот полный ответ:
- Установите пакет «dotenv» локально:
npm install dotenv
- Где задать значения переменных среды. Некоторые альтернативы таковы:
- в конфигурации запуска VSCode ( launch.json или settings.json) :
{ "name": "node launch $ file", "type": "node", "request": "launch", "program": "${file}", "env": {"LAUNCH_CONFIG": "node launch $ file"} //lt;--ENVIRONMENT VARIABLE }
- и/или создайте файл с именем «.env» в корневом каталоге проекта и добавьте в него значения:
FROM_FILE="value from file"
Это расположение по умолчанию для .env, но его можно разместить в другом месте.
- и/или передайте их в командной строке узлу, как показано ниже.
- «требуется» пакет dotenv. Некоторые альтернативы таковы:
- добавьте следующую строку в начале сценария:
require('dotenv').config()
- и/или мы можем запросить его в командной строке, используя опцию «-r». :
node -r dotenv/config script.js
- .env может быть расположен в другом каталоге:
node -r dotenv/config script.js dotenv_config_path=/custom-path-to-env/.env
- Передача переменных в командной строке:
CLINE="cline" node script.js CLINE="cline" node -r dotenv/config script.js dotenv_config_path=/custom-path-to-env/.env
5. Наконец, внутри скрипта мы можем прочитать их значения, используя process.env.VARIABLE_NAME, т. е. :
var foo = process.env.LAUNCH_CONFIG
require('dotenv').config() function notDefined(value) { return ((value === undefined) || (value === null)) } function checkVars(varName, value) { if (varName === 'LAUNCH_CONFIG') console.log( notDefined(value) ? `I came from command line, or variable ${varName} is missing.` : `I came from VScode with configuration named '${value}'.` ) else console.log( notDefined(value) ? `variable ${varName} is missing.` : `variable ${varName} = "${value}"` ) } console.log('') checkVars('LAUNCH_CONFIG', process.env.LAUNCH_CONFIG) checkVars('FROM_FILE', process.env.FROM_FILE) checkVars('CLINE', process.env.CLINE)
Результаты:
Запущен из кода Visual Studio:
I came from VScode with configuration named 'node launch $ file'. variable FROM_FILE is missing. variable CLINE is missing.
Переменные из файла default .env :
node envar.js I came from command line, or variable LAUNCH_CONFIG is missing. variable FROM_FILE = "from default .env" variable CLINE is missing.
Переменные из командной строки и другого файла:
CLINE="cline" node -r dotenv/config envar.js dotenv_config_path=/C/DEVELOP/JS/another_file I came from command line, or variable LAUNCH_CONFIG is missing. variable FROM_FILE = "from another file" variable CLINE = "cline"
Переменные из другого каталога :
node -r dotenv/config envar.js dotenv_config_path=/C/DEVELOP/JS/ANOTHER_DIR/.env I came from command line, or variable LAUNCH_CONFIG is missing. variable FROM_FILE = "from another directory" variable CLINE is missing.