visual-studio-code - VSCode 不会为 nextjs (9.5.2) 绑定(bind)客户端断点

标签 visual-studio-code google-chrome-devtools next.js vscode-debugger

在 nextjs 的最近更新之一中,vscode 中的客户端 chrome 调试似乎已经损坏。当我启动以下配置时,我的断点都没有被绑定(bind):

        {
            "type": "chrome",
            "request": "launch",
            "name": "Debug Chrome on localhost",
            "url": "http://localhost:3000",
            "webRoot": "${workspaceFolder}/pathto/myapp"
        },
请注意,我使用的是 Debugger for Chrome (v4.12.10)VSCode (v1.48.1) 上扩展我正在调试 nextjs (v9.5.2) 提供的客户端 javascript在 Chrome 中运行,而不是 nextjs 节点进程。
有谁知道发生了什么变化以及如何让调试器再次绑定(bind)断点?

最佳答案

以前,vscode 将(默认情况下)使用以下源映射路径来解释 webpack 提供的源映射:

            "sourceMapPathOverrides": {
                "webpack:///./*": "${webRoot}/*",
                "webpack:///src/*": "${webRoot}/*",
                "webpack:///*": "*",
                "webpack:///./~/*": "${webRoot}/node_modules/*",
                "meteor://💻app/*": "${webRoot}/*"
            }
如果您查看 sources但是,在 chrome devtools 中,您可以在神秘的 _N_E 下找到源映射。路径(橙色文件夹是指带有源映射的源)。
enter image description here
似乎在最近的更新中,为准备 webpack 5,nextjs 团队更改了提供源映射的路径:https://github.com/vercel/next.js/pull/15955
所以这意味着默认源映射路径覆盖都没有正确解析。
添加 "webpack://_N_E/*": "${webRoot}/*"作为替代解决了这个问题!
另外,请注意 //双斜杠而不是之前的 ///三重斜线。
这是我的工作启动配置(将其放在 configurations 中的 .vscode/launch.json 中:
        {
            "type": "chrome",
            "request": "launch",
            "name": "Debug Chrome on localhost",
            "url": "http://localhost:3000",
            "webRoot": "${workspaceFolder}/pathto/myapp",
            "sourceMapPathOverrides": {
                "webpack://_N_E/*": "${webRoot}/*"
            }
        },
不要忘记将/pathto/myapp 更改为存储库中应用程序根目录的路径。这也可能以 /src 结束。如果你正在使用它。或者如果您使用 nextjs,则将其完全删除盒子外面!
希望这对某人有帮助!确实让我困惑地挠了挠头……
编辑:
我实际上在 nextjs 上打开了一个问题。指出他们的文档存在一些问题。如果很多其他人有这个问题,我建议在那里做一个记录,以便 nextjs 团队意识到它!
https://github.com/vercel/next.js/issues/16442

关于visual-studio-code - VSCode 不会为 nextjs (9.5.2) 绑定(bind)客户端断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63523469/

相关文章:

git push origin master缺少凭证或凭证无效

javascript - 如何检查绑定(bind)到 DOM 元素的 View 模型对象?

azure - NextJS 公共(public)环境变量不适用于 Azure 应用服务

macos - Mac 上的目标 .Netcore 2.1

visual-studio-code - 如何将 Intellisense 添加到 Visual Studio Code 以进行引导

javascript - 如何在 Chrome DevTools 中运行自定义代码?

javascript - 为什么当 Dev Console 启动时我在 Chrome 中获得更好的性能?

reactjs - 类型 'token' 中缺少属性 'PropsWithChildren<WithUrqlProps>',但类型 '{ token: string; }' 中需要属性 0x104567910

next.js - 您应该如何使用 getServerSideProps 在路由转换时获取客户端数据?

git - 如何忽略 visual studio 代码中的整个 git 存储库?