嗨,大家好 !

我正在使用VSCode在带有lerna的monorepo中处理一个开源项目,我想提供一个软件包,其中包含轻松做出贡献所需的工具。

为了以对我来说似乎很干净的方式执行此操作,我在我的工作台软件包中添加了我的monorepo作为子模块。

这是我当前设置的链接:
https://github.com/Aetherall/accounts-workbench

该软件包的主要目的是给开发人员一个有效的调试器配置,该配置允许断点并遵循monorepo软件包源中的Error堆栈。

我成功使VSCode读取了我的源地图。
确实,我打开了跟踪选项,并且在日志中看到.map文件已解析。

但是-这是我的问题-当我触发错误时,调试器没有向我显示源代码,而是向我展示了已转译的文件...

这是一个文件的日志示例(如果需要帮助,我可以提供整个日志)

SourceMaps: sourcemap url parsed from end of generated content:

AuthenticationServicePassword.js.map

SourceMaps.getMapForGeneratedPath: Finding SourceMap for

/home/aetherall/Workspace/github/accounts/accounts-workbench/accounts/packages/Server/Authentication/Password/PasswordService/lib/AuthenticationServicePassword.js by URI:

AuthenticationServicePassword.js.map

SourceMaps.loadSourceMapContents: Reading local sourcemap file from

/home/aetherall/Workspace/github/accounts/accounts-workbench/accounts/packages/Server/Authentication/Password/PasswordService/lib/AuthenticationServicePassword.js.map


这是我的调试器配置:

{
        "type": "node",
        "request": "launch",
        "name": "Start dev server",
        "program": "${workspaceRoot}/config/start.js",
        "protocol": "inspector",
        "sourceMaps": true,
        "cwd": "${workspaceRoot}",
        "outFiles": [
            "${workspaceRoot}/dist/**/*.js",
            "${workspaceRoot}/**/lib/**/*.js",
            "!**/node_modules/**/*",
        ],
        "skipFiles": ["${workspaceRoot}/node_modules/**/*", "<node_internals>/**/*.js"],
        "smartStep": true,
        "trace": "sm"
},


我正在使用webpack捆绑工作台软件包(而不是monorepo),并使用tsc将javascript中的打字稿软件包与monorepo子模块中的sourceMap进行编译

我当然可以根据需要添加更多信息

感谢您帮助我完成这一任务!
我真的不明白为什么调试器不使用sourceMaps ...

如果您有解决方案,请给我一些问题的解释

最佳答案

我找到了解决问题的方法:

Webpack的源地图加载器

这样,将在webpack中解析导入和编译的文件的源映射。

https://github.com/webpack-contrib/source-map-loader

09-12 16:38