VSCode: получение конфигурации запуска, которая использовалась для запуска автономного сценария (т. е. JavaScript с Node.js)

#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, вот полный ответ:

  1. Установите пакет «dotenv» локально:
     npm install dotenv  
  2. Где задать значения переменных среды. Некоторые альтернативы таковы:
  • в конфигурации запуска 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, но его можно разместить в другом месте.

  • и/или передайте их в командной строке узлу, как показано ниже.
  1. «требуется» пакет 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  
  1. Передача переменных в командной строке:
     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.