【发布时间】:2018-03-08 09:16:50
【问题描述】:
我的问题很简单。
我只想让 VS Code 的调试器与 webpack-dev-server 一起工作,而不忽略我的断点。
现在,webpack-dev-server 从内存中提供捆绑的文件,而如果我理解正确的话,VS Code 调试器会在磁盘上搜索它们(...或者不是?...)
因此,每当我设置断点时,我都会感到害怕
Breakpoint ignored because generated code not found (source map problem?)
现在,我能找到的每个相关问题都主要与 typescript 有关,而不是 webpack-dev-server 从内存中提供服务这一事实。我没有使用打字稿。似乎人们要么没有使用 webpack-dev-server,要么我错过了一些明显的东西,我的钱花在了后者上。
这是我的 VS 代码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": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceRoot}",
"sourceMaps": true,
"trace": true
}
]
}
这些是来自我的webpack.config.js的相关行
devtool: 'cheap-module-source-map',
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].[chunkhash].js'
},
我尝试了对launch.json 的各种修改,但都无济于事,所以我只是将其粘贴为原版形式。
请注意,output.path 仅在有生产版本并且文件被喷到磁盘时使用。
以下是服务页面中文件的结构:
这是我在开发中运行的命令
"scripts": {
"start": "webpack-dev-server --host 0.0.0.0 --config ./webpack.config.js"
},
最后,这是来自跟踪文件的相关块
From target: {"method":"Debugger.scriptParsed","params":{"scriptId":"30","url":"http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js","startLine":0,"startColumn":0,"endLine":150,"endColumn":57,"executionContextId":2,"hash":"216099518F33D6091EC12795265804FB35669A30","executionContextAuxData":{"isDefault":true,"frameId":"18228.1"},"isLiveEdit":false,"sourceMapURL":"manifest.0ec68ebd5f0abf9b4cd4.js.map","hasSourceURL":false,"isModule":false,"length":5906}}
Paths.scriptParsed: could not resolve http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js to a file under webRoot: e:\Mitch\Workspace\Projects\project-name. It may be external or served directly from the server's memory (and that's OK).
SourceMaps.getMapForGeneratedPath: Finding SourceMap for http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js by URI: manifest.0ec68ebd5f0abf9b4cd4.js.map and webRoot: e:\Mitch\Workspace\Projects\project-name
SourceMaps.loadSourceMapContents: Downloading sourcemap file from http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js.map
To client: {"seq":0,"type":"event","event":"script","body":{"reason":"new","script":{"id":1,"source":{"name":"manifest.0ec68ebd5f0abf9b4cd4.js","path":"http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js","sourceReference":1001}}}}
To client: {"seq":0,"type":"event","event":"scriptLoaded","body":{"path":"http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js"}}
SourceMap: creating for http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js
SourceMap: sourceRoot:
SourceMap: sources: ["webpack:///webpack/bootstrap 7617f9bf7c8b0bc95159"]
SourceMap: webRoot: e:\Mitch\Workspace\Projects\project-name
SourceMap: no sourceRoot specified, using webRoot + script path dirname: e:\Mitch\Workspace\Projects\project-name\
SourceMap: mapping webpack:///webpack/bootstrap 7617f9bf7c8b0bc95159 => webpack\bootstrap 7617f9bf7c8b0bc95159, via sourceMapPathOverrides entry - "webpack:///*": "*"
SourceMaps.scriptParsed: http://localhost:8080/manifest.0ec68ebd5f0abf9b4cd4.js was just loaded and has mapped sources: ["webpack\\bootstrap 7617f9bf7c8b0bc95159"]
这让我发疯了,我在过去的 3 个小时里搜索了 Google,但无济于事,现在是凌晨 5 点。
更新:不幸的是,自从提出问题以来,我已经停止使用 VS Code 并改用 Webstorm。感谢大家的帮助和您的时间。
【问题讨论】:
-
刚刚在my project 上试过这个,它还通过添加 Chrome 启动 sn-p 来使用 webpack-dev-server,你只做了最少的修改 - { "type": "chrome", "request": " launch", "name": "Launch Chrome against localhost", "url": "localhost:3000", "webRoot": "${workspaceRoot}", "sourceMaps": true, "trace": true } 我能调试。你能在最后试试吗?我通过
yarn run start-ui在 cmd 会话中运行该项目以启动 wds。然后我用vscode启动chrome。 -
不,我在 React 组件中添加的任何断点都会随着
Breakpoint ignored because generated code not found (source map problem?)消息而丢失 -
这也可能有助于测试我的 repo。否则,如果您可以共享一个最小的 repo,我可以在最后尝试一下。这将排除任何与机器相关的问题。
-
好的,今晚晚些时候我会创建一个最小的 repo,届时我将有一些时间。
-
@DimitrisKaragiannis:你的理解是正确的。 Webpack-dev-server 不会将文件写入磁盘,因此在 Source 中放置任何断点都无济于事。您可以探索以下 2 个插件并尝试:github.com/gajus/write-file-webpack-plugingithub.com/FormidableLabs/webpack-disk-plugin
标签: json debugging webpack visual-studio-code webpack-dev-server