嗨,大家好 !
我正在使用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