IntelliJ IDEA TypeScript/Отладка Webpack работает только с точками прерывания JavaScript
Я играю с проектом Angular 2/Bootstrap 4/Webpack, чтобы посмотреть, как выстраивается новый материал, и я пытаясь получить отладку для работы в IntelliJ IDEA 15 в Chrome с расширением Chrome JetBrains.
Проблема в том, что любые точки останова, установленные в моих файлах TypeScript, игнорируются. Я использую встроенный транспилер и оставляю выходные файлы JavaScript с тем же именем/местоположением, что и файлы TypeScript, так что my-app.ts находится в той же папке, что и my-app.js, и связанной с ней моей -app.js.map.
Нечетным является то, что если бы я установил точки останова в сгенерированном файле JavaScript, среда IDE затем разрывается в соответствующем месте в файле TypeScript (даже при том, что там нет точки останова). Затем я могу нормально работать, так как отображение, похоже, работает.
Проблема заключается в том, что установка точки останова в файле .ts не устанавливает необходимую точку останова в соответствующем .js файле.
Я делаю что-то неправильно (я никогда не работал с отладкой TypeScript раньше), или это ошибка в IDEA?
P.S. Я получаю те же результаты, будь то удаленная отладка JavaScript или использование локальной отладки через встроенный веб-сервер IDEA.
Ответы
Ответ 1
Трюк заключался в добавлении ссылки на внутренний URL Webpack на конфигурацию отладки. Путь к использованию для этого URL Webpack будет поступать со вкладки сценариев отладчика при запуске приложения. Вы также можете увидеть его в теге Chrome scripts так же легко, но я включил представление из IntelliJ IDEA здесь:
![введите описание изображения здесь]()
Вы можете видеть, что путь .
в webpack://
соответствует моей папке проекта (о чем свидетельствует путь src
). Это сказало мне, что мне нужно использовать путь .
для Webpack в конфигурации debug. Если ваш проект отличается от другого, вам придется соответствующим образом настроить.
Что касается webpack:///.
(с тремя косой чертой) вместо webpack://.
, я не могу ответить. Я видел, что использовал в сообщении JetBrains, и это привело меня к этому решению добавления дополнительной косой черты.
Теперь вам нужно создать свою конфигурацию отладки JavaScript и настроить ее следующим образом:
![введите описание изображения здесь]()
Откорректируйте URL и порт localhost
, а также ваш путь сборки (__build__
в моем случае, возможно build
или dist
в вашем).
Теперь, когда у меня есть настройка конфигурации отладки, как указано выше, она работает нормально.
Ответ 2
Я успешно решил проблему с отладкой с помощью webpack в Intellij/Webstorm на основе этого решения: Как отладить angular 2 приложение, используя angular -cli webpack?. Вам необходимо сопоставить основной каталог и каталог проекта ui с источниками .ts для удаленного URL-адреса, точно так же, как и в решении вверх.
Мой tsconfig.json:
{
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es6", "dom"],
"mapRoot": "./",
"module": "es6",
"moduleResolution": "node",
"noImplicitAny": false,
"outDir": "../resources/static/out-tsc",
"sourceMap": true,
"target": "es6",
"typeRoots": [
"../../../node_modules/@types"
]
}
}