VS Code - 调试Laravel项目中的VUE组件 - 未验证的断点

时间:2018-03-13 11:40:06

标签: debugging laravel-5 vue.js visual-studio-code

我正在尝试使用VS Code调试Laravel 5.5项目中的VUE组件。

安装了最新版本的VS Code 已安装适用于Chrome 4.2.0的调试程序 所有Chrome进程都已被杀死。

.vscode文件夹中的

launch.json具有以下代码:

"version": "0.2.0",
"configurations": [
    {
        "name": "Launch",
        "type": "chrome",
        "request": "launch",
        "url": "http://localhost:8000",
        "webRoot": "${workspaceRoot}",
        "sourceMaps": true,
        "runtimeArgs": [
        "--remote-debugging-port=9222"
        ]
    },  
]

我从CMD开始这样的项目:

λ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>

我在Vue组件中设置断点并开始调试 (see image)

结果,项目页面在Chrome中打开,但断点不起作用 它显示为灰色,显示以下消息:

Unverified breakpoint, Breakpoint ignored because generated code not found
(source map problem?)

我在项目文件夹中找到了4个名为“webpack.mix.js”的文件。我添加了“.sourceMaps();”对他们每个人都这样:

mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css')
   .sourceMaps();

之后我通过以下方式重建项目:

npm run dev

但是我没有在CSS文件夹中找到任何地图文件,问题仍然存在。

3 个答案:

答案 0 :(得分:3)

这是对我有用的配置,它使我可以直接在VSCode中为.vue.js文件设置断点:

VSCode的launch.json

{
    "version": "0.2.0",
    "configurations": [{
        "type": "chrome",
        "request": "launch",
        "name": "vuejs: chrome",
        "url": "http://localhost:8080",
        "webRoot": "${workspaceFolder}/public",
        "sourceMapPathOverrides": {
            "webpack:///resources/assets/js/*.vue": "${workspaceFolder}/resources/assets/js/*.vue",
            "webpack:///./resources/assets/js/*.js": "${workspaceFolder}/resources/assets/js/*.js",
            "webpack:///./node_modules/*": "${workspaceFolder}/node_modules/*"
        }
    }]
}

webpack.mix.js

let mix = require('laravel-mix');

mix
  .js('resources/assets/js/app.js', 'public/js')
  .sourceMaps(false, 'source-map')
  .sass('resources/assets/sass/app.scss', 'public/css');

答案 1 :(得分:1)

不幸的是“.sourceMaps()”没有帮助,但在这种情况下可以使用“debugger”关键字代替标准断点。您只需将其添加到所需的代码行,代码就会停在那里。

See the result image

答案 2 :(得分:0)

我的行为完全一样。代码中的调试器字有效,但vscode红点常规断点无效。 我尝试使用 sourceMapOverrides 路径进行了许多修复和组合,但最终仅将我的devtools sourcemaps类型设置为 cheap-module-eval-sourcemap 为我的项目解决问题!

在您的 webpack.mix 中,尝试以下行:

mix.webpackConfig({ devtool: 'cheap-module-eval-sourcemap' })

请参阅我的github评论和问题,以获取更多详细信息

如果all of that types不起作用,也许会很好

这是我的调试配置:

{
      "type": "chrome",
      "request": "launch",
      "name": "vuejs: chrome",
      "url": "http://localhost",
      "webRoot": "${workspaceFolder}/public",
      "breakOnLoad": true,
      "sourceMapPathOverrides": {
            "webpack:///resources/js/*.vue": "${workspaceFolder}/resources/js/*.vue",
            "webpack:///./resources/js/*.js": "${workspaceFolder}/resources/js/*.js",
             "webpack:///./node_modules/*": "${workspaceFolder}/node_modules/*"
       },
},