Я хотел бы иметь возможность отлаживать приложение Angular2 с помощью кода Visual Studio.
Здесь моя среда:
- ОС: Ubuntu 16.10 x64
- Браузер: Chromium 53.0.2785.143
- Узел: 6.8.0
- Angular-cli: 1.0.0-beta.19-3
Создание нового проекта с angular-cli:
ng new test-VSC-debug
cd test-VSC-debug
Затем я открываю VSC и загружаю проект: File/open folder
Я нажимаю на логотип debug
и configure launch.json
, выбрав chrome
. Создает следующий файл:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome against localhost, with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost:8080",
"sourceMaps": true,
"webRoot": "${workspaceRoot}"
},
{
"name": "Attach to Chrome, with sourcemaps",
"type": "chrome",
"request": "attach",
"port": 9222,
"sourceMaps": true,
"webRoot": "${workspaceRoot}"
}
]
}
Затем я просто запускаю проект angular2, выполнив:
ng serve
Как только это началось, в VSC я выбираю: "Запустить Chrome против localhost, с исходными картами".
Затем я получаю следующую ошибку:
"Не удается найти chrome: установите его или установите поле runtimeExecutable в конфигурации запуска".
Итак, я установил:
"runtimeExecutable": "хром-браузер"
(поскольку у меня нет хрома, но хром на моем Ubuntu).
Порт Angular-Cli по умолчанию для запуска приложения - 4200. Измените URL-адрес с: " http://localhost: 8080 " на " http://localhost: 4200 ".
Теперь браузер открывает приложение, но VSC имеет следующую ошибку: "Не удается подключиться к процессу выполнения, время ожидания превышает 10000 мс - (причина: не удается подключиться к цели: подключено ECONREFUSED 127.0.0.1:9222".
Из других ответов на вопросы stackoverflow/github я прочитал, что мне, возможно, придется убить все экземпляры chrome, прежде чем пытаться это сделать, поэтому я просто закрываю chromium и запускаю killall chromium-browser
.
Я пытаюсь снова запустить отладку: та же ошибка, что и раньше (не удается подключиться).
Я также видел, что следующие аргументы могут помочь:
"runtimeArgs": [
"--remote-debugging-port=9222",
"--user-data-dir"
]
Но это ничего не меняет.
Я решил использовать VSC для моих разработчиков машинописного текста (в основном angular2), и этот способ отладки кажется очень мощным. У меня такое чувство, что было бы слишком плохо не использовать его :).
Спасибо за любую помощь!
PS: некоторые вопросы, связанные со стековым потоком и проблемами с github:
Отладки и запуска Angular2 Typescript с помощью кода Visual Studio?
- https://github.com/angular/angular-cli/issues/2453
- https://github.com/angular/angular-cli/issues/1936
- https://github.com/angular/angular-cli/issues/1281
РЕДАКТИРОВАТЬ 1: !!! Частичное улучшение !!! Я нашел способ получить отладочную информацию в консоли кода Visual Studio! Так что это еще не идеально, так как точки останова не работают, но вот в чем дело. До сих пор, если я открыл http://localhost: 9222, я не смог ничего увидеть. ("localhost не авторизовал соединение").
НО, если я запускаю хром вот так:
chromium-browser --remote-debugging-port=9222 --user-data-dir=remote-profile
Важно отметить этот аргумент: --user-data-dir=remote-profile
. Если вы просто передадите --user-data-dir, то откроется новое окно, в котором никто не подключен. Но этого недостаточно. Вам необходимо передать удаленный профиль в качестве значения.
- открывается новое окно браузера
- Я открываю http://localhost: 4200 И я также могу связаться с http://localhost: 9222 !
- Я могу подключить VSC с опцией "Присоединить к Chrome с исходной карты"!
(как вы видите, у меня действительно "Angular 2 работает в режиме разработки. Вызовите enableProdMode(), чтобы включить производственный режим.", Отображаемым в консоли, и нижний колонтитул теперь имеет оранжевый фон)
До сих пор, я надеюсь, что это может помочь некоторым людям. Но проблема в том, что точки останова не работают.
Я продолжаю копать и сделаю еще одну правку, если найду причину.