Запуск проекта NodeJS в коде Visual Studio с пряжей
У меня есть проект NodeJS, который я могу запустить из командной строки с помощью команды yarn start
. Мой package.json
выглядит примерно так:
{
"name": "projectname",
"version": "0.0.1",
"description": "",
"author": "My Name",
"license": "",
"scripts": {
"start": "yarn dev",
"dev": "yarn stop && pm2 start pm2-dev.yaml && webpack-dev-server --progress",
"prod": "yarn stop && yarn build && pm2 start pm2-prod.yaml",
"build": "rimraf dist lib && babel src -d lib --ignore test.js && cross-env NODE_ENV=production webpack -p --progress",
"stop": "rimraf logs/* && pm2 delete all || true"
},
"dependencies": {
"body-parser": "~1.16.0",
"ejs": "2.5.5",
"express": "^4.14.1",
"pg": "^6.1.2",
"react": "^15.4.2",
"redux": "^3.6.0",
},
"devDependencies": {
"babel-cli": "^6.22.2",
"cross-env": "^3.1.4",
"eslint": "^3.13.0",
"pm2": "^2.3.0",
"redux-mock-store": "^1.2.2",
"rimraf": "^2.5.4",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.2.1"
}
}
Я пытаюсь запустить этот проект в режиме отладки с помощью Visual Studio Code, но почти не повезло. Я определил конфигурацию запуска в файле VS Code launch.json
следующим образом:
{
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "yarn",
"runtimeExecutable": "yarn",
"runtimeArgs": [
"start"
],
"port": 5858,
"cwd": "${workspaceRoot}",
"timeout": 10000
}
]
}
Проблема с этой конфигурацией заключается в том, что она обычно webpack-dev-server
, поскольку webpack-dev-server
больше 10 секунд. Я могу увеличить timeout
в своей конфигурации, но я заметил, что VS Code приводит к сообщению Cannot connect to runtime process (timeout after 30000 ms).
удается Cannot connect to runtime process (timeout after 30000 ms).
в конце концов, поэтому я предполагаю, что это нехорошее решение. Кроме того, мои точки останова игнорируются с помощью такой конфигурации, которая говорит мне, что я определенно делаю что-то неправильно здесь.
Это первый раз, когда я пытаюсь использовать Visual Studio Code, и я обычно не использую NodeJS, но я получил этот проект со всеми этими скриптами в package.json
уже был определен, поэтому я пытаюсь принять его, и поэтому вся путаница о том, как правильно запустить его.
Может ли Visual Studio Code запускать такой проект с полной функциональностью отладки вообще, и если да, то как мне настроить сценарий запуска?
Ответы
Ответ 1
Я не могу конкретно ответить на части вопроса, связанные с веб-пакетом. Однако ваш скрипт выше не будет работать, потому что вы не включили отладку. Открытая отладка позволяет отладчику подключаться к этому процессу, а также блокирует выполнение программы до тех пор, пока не подключится отладчик. Вам нужно будет сделать еще один скрипт в вашем package.json, который позволяет отлаживать. Затем вы можете использовать свой отладочный скрипт для отладки и ваш не отладочный скрипт для нормальной работы. Например:
"scripts": {
"start": "yarn dev",
"dev": "node entry.js",
"dev-debug": "node --inspect-brk=5858 entry.js",
Затем в файле launch.json замените "start" на "dev-debug". Порт отладки уже установлен на 5858 в файлах launch.json и package.json, так что это должно работать. Ключ запускает узел с помощью команды --inspect-brk, заставляющей выполнение приложения узла останавливаться, пока к нему не подключится отладчик.
Ответ 2
Я launch.json
следующую конфигурацию в launch.json
:
{
"type": "node",
"request": "launch",
"name": "Launch via Yarn",
"runtimeExecutable": "yarn",
"cwd": "${workspaceFolder}",
"runtimeArgs": ["start:debug"],
"port": 5858
}
И следующая запись в свойстве scripts
внутри package.json
:
"start:debug": "node --inspect-brk=5858 ./server/index.js",
Вы можете включить ключ timeout
(по умолчанию 10000) и увеличить его значение, если в вашем package.json
сценарий prestart:debug
что может привести к задержке запуска реального приложения узла.
Ответ 3
Не использовали отлаживаемый код VS, но я использую nodemon
для отладки с Chrome с помощью сценария shell
.
bin_dir="$__dirname/../node_modules/.bin"
src_dir="$__dirname/../src"
"$bin_dir/nodemon" --ext js,yaml \
--watch "$src_dir/package.json" \
--watch "$src_dir" \
"$src_dir/index.js" \
--exec "yarn && babel-node --inspect=0.0.0.0:9229"
Откройте chrome://inspect/#devices
и запустите ваш отладчик