Подтвердить что ты не робот

Можно ли настроить Visual Studio Code для запуска с помощью nodemon

Я установил nodemon в качестве глобального пакета в своей системе. Он работает, когда я выполнил nodemon в cmd.

Но когда я использую vscode с этим launch.json файлом, vscode генерирует это исключение:

запрос запуска: исполняемый исполняемый файл XXX\XXX\XXX\XXX\nodemon не существует

the launch.json:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Launch",
        "type": "node",
        "request": "launch",
        "program": "app.js",
        "stopOnEntry": false,
        "args": [],
        "cwd": ".",
        "runtimeExecutable": nodemon,
        "runtimeArgs": [
            "--nolazy"
        ],
        "env": {
            "NODE_ENV": "development"
        },
        "externalConsole": false,
        "preLaunchTask": "",
        "sourceMaps": false,
        "outDir": null
    },
    {
        "name": "Attach",
        "type": "node",
        "request": "attach",
        "port": 5858
    }
]
}

когда я стираю нодемин в runtimeExecutable, он отлично работает с node

4b9b3361

Ответ 1

Во-первых, установите nodemon как зависимость dev:

npm install --save-dev nodemon

Для более новых версий VS Code настройте свой .vscode/launch.json следующим образом:

{
    "version": "0.2.0",
    "configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "nodemon",
        "runtimeExecutable": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
        "program": "${workspaceFolder}/app.js",
        "restart": true,
        "console": "integratedTerminal",
        "internalConsoleOptions": "neverOpen"
    }]
}

Наиболее важными элементами являются свойство runtimeExecutable которое указывает на скрипт nodemon, и свойство program которое указывает на ваш скрипт точки входа.

Если вы используете более старый VS Code (который вы не должны), попробуйте следующую конфигурацию запуска:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch with nodemon",
      "type": "node",
      "request": "launch",
      "program": "${workspaceRoot}/node_modules/nodemon/bin/nodemon.js",
      "args": ["${workspaceRoot}/app.js"],
      "runtimeArgs": ["--nolazy"]
    }
  ]
}

Наиболее важными частями являются свойство program которое указывает на скрипт nodemon, и свойство args которое указывает на ваш обычный скрипт точки входа.

Ответ 2

Я не смог получить ответ @AdrianT, работая с отладчиком. Кажется, что есть более новый встроенный поддерживаемый способ сделать это:

  1. Откройте раскрывающийся список "Конфигурация запуска" и выберите "Добавить конфигурацию..."
  2. Выберите "Node.js: Настройка Nodemon"

Это добавит что-то вроде этого в ваш launch.json:

{
        "type": "node",
        "request": "launch",
        "name": "nodemon",
        "runtimeExecutable": "nodemon",
        "program": "${workspaceRoot}/app.js",
        "restart": true,
        "console": "integratedTerminal",
        "internalConsoleOptions": "neverOpen"
}

Убедитесь, что в настройках "программы" указан правильный сценарий точки входа.

Вам нужно установить nodemon глобально, чтобы заставить это работать (npm install -g nodemon) (согласно документации)

Теперь ваше приложение запускается, и вы можете устанавливать точки останова, которые будут попадать, и консоль регистрируется в окне интегрированного терминала.

Обратите внимание, что завершение сеанса отладки прекращает только отладку программы, а не сам nodemon. Чтобы завершить nodemon, нажмите Control-C на встроенном терминале.

Ответ 3

В коде Visual Studio создайте конфигурацию запуска:

{
    "name": "Attach",
    "type": "node",
    "request": "attach",
    "port": 5858,
    "restart": true
}

запустите nodemon из командной строки: nodemon --debug server.js

Теперь "Прикрепить" от VC и vuala.

Ответ 4

Присоединение - это, безусловно, простой вариант. Чтобы убедиться, что ваш код разбит, убедитесь, что вы используете nodemon с помощью --inspect-brk (node 8+), например:

nodemon --inspect-brk src/app.js

После запуска nodemon запустит порт для отладочных соединений:

Debugger listening on ws://127.0.0.1:9229/someUUID

Вы можете взять этот порт, чтобы создать конфигурацию запуска, что довольно просто:

{
  "type": "node",
  "request": "attach",
  "name": "Attach",
  "port": 9229,
  "restart": true
},

Ответ 5

Нет, в настоящее время он не может. Но мне удалось получить эту работу, используя nodemon. Я начинаю его с Гранта. Но эквивалентная командная строка должна делать то же самое.

РЕДАКТИРОВАТЬ. После вечернего тестирования я могу сказать, что под подходом все еще несколько чешуйчатый: S, присоединение прерывается, а иногда точки останова игнорируются.

EDIT2. Вы также можете указать порт отладки по умолчанию в файле Gruntfile с помощью ['--debug-brk=5860'] для nodeArgs. Мне также рекомендуется использовать --debug-brk вместо --debug. Возможно, это устранит текущую чешуйку. Я вернусь и расскажу об этом, если это поможет (в настоящее время я переключил проект).

В случае, если это может помочь любому, кто работает с нижеприведенными настройками в текущей версии кода VS (например, v0.10.6) в Windows 10. Но это, вероятно, будет работать и на Mac (я могу проверить позже). Но обратите внимание, что мне иногда приходится запускать восстановление, изменяя + сохранение файла до того, как отладчик подберет его.

/.vscode/launch.json

{
"configurations": [{
    "name": "Launch",
    "outDir": null

},{
    "name": "Attach",
    "type": "node",
    "request": "attach",
    "port": 5858
}]

}

/Gruntfile.js

nodemon : {
    dev : {
    script : 'launcher.js'
    },
    options : {
        ignore : ['node_modules/**', 'Gruntfile.js'],
               nodeArgs: ['--debug'],
        env : { PORT : '4123'
        }
    }
}

Я думаю, что отладочный порт 5858 является значением по умолчанию, так как он здесь не указан (обратите внимание, что он находится в launch.json выше).

Ответ 7

Я использую плагин Node Exec. Он позволяет запускать и останавливать приложение Node в vcs, нажимая F8 и F9 (применяется к открытому файлу в редакторе). Это может помочь как временное решение.