Не удается отладить приложение Vue в Chrome с помощью кода Visual Studio — Неограниченные точки останова

#debugging #visual-studio-code #vuejs2 #chrome-debugging

Вопрос:

Я пытаюсь отладить приложение Vue с помощью VSC. У меня есть следующий файл launch.json

 {
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "Attach to Chrome",
        "port": 9222,
        "request": "attach",
        "type": "pwa-chrome",
        "url": "http://localhost:8080",
        "webRoot": "${workspaceFolder}/src",
        "breakOnLoad": true,
        "sourceMapPathOverrides":{
            "webpack:///src/*": "${webRoot}/*"
        } 
    },
    {
        "type": "pwa-chrome",
        "request": "launch",
        "name": "Launch Chrome against localhost",
        "url": "http://localhost:8080",
        "webRoot": "${workspaceFolder}/src",
        "breakOnLoad": true,
        "sourceMapPathOverrides":{
            "webpack:///src/*": "${webRoot}/*"
        }
    }
]
 

}

Я также добавил следующее vue.config.js файл в корневой каталог проекта

 module.exports = {
configureWebpack: {
    devtool: 'source-map'
},
devServer: {
    port: 8080
}
 

}

Для отладки приложения Vue я использую «службу запуска npm» в терминале, нажимаю опцию «Выполнить и отладить» в меню слева и выбираю конфигурацию отладки под названием «Запустить Chrome на локальном хосте».

Я не могу привязать какие-либо точки останова,т. Е. Точки останова представляют собой незаполненные серые круги в коде.

Не знаю, что попробовать дальше, в онлайн-поиске ничего не всплывает о том, в чем может быть проблема.

Ответ №1:

у вас, вероятно, есть несоответствие в вашем "sourceMapPathOverrides" .

"sourceMapPathOverrides" должно указывать на корневой файл, в котором webpack сгенерировал исходную карту. Вы можете проверить это в своих инструментах разработки chrome.

Сделайте следующее

1 — Откройте свои инструменты разработки chrome:

введите описание изображения здесь

2 — Исследуйте webpack:// большинство случаев, когда он находится внутри . или src в папках. Чтобы проверить это, откройте случайный компонент vue, и он должен выглядеть так же, как в вашем редакторе vs-кода, это правильная исходная карта, на которую "sourceMapPathOverrides" следует указывать.

Бонус

Точная конфигурация, которую я использовал тогда, такова:

 {
  "version": "0.2.0",
  "configurations": [
    {
      "type": "chrome",
      "request": "launch",
      "name": "vuejs: chrome",
      "url": "http://localhost:8080/",
      "webRoot": "${workspaceFolder}/src",
      "breakOnLoad": true,
      "sourceMapPathOverrides": {
        "webpack:///src/*": "${webRoot}/*"
      }
    }
  ]
}
 

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

Комментарии:

1. Решил мою проблему для стандартного Vue. Я смог привязать точки останова внутри стандартного Vue, но не раньше, чем компоненты действительно загрузятся. Так что, похоже, это всегда срабатывало, я просто не понимал, что они не будут привязываться до загрузки. Но…ничто, связанное с хранилищем VUEX, не позволит использовать точки останова, включая любые JS, которые я импортирую в файл js этого хранилища. Однако, если я установлю точку останова со стороны Chrome, она передаст управление VSC, и я смогу пройти через код таким образом. Не совсем так, как я хочу, чтобы это работало, но в литературе VUEX нет ничего, что ссылалось бы на какой-либо другой способ.