我正在尝试使用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文件夹中找到任何地图文件,问题仍然存在。
答案 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”关键字代替标准断点。您只需将其添加到所需的代码行,代码就会停在那里。
答案 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/*"
},
},