Nodejs调试报错行数不准确
Nodejs调试报错行数不准确
使用 ts 编写项目,ts-node 启动项目调试,报错的堆栈信息和实际的错误行数对不上咋整?
将 devtool 改成 cheap-module-source-map 试试
后端啊,哪里什么 devtool
那是在 tsconfig 里关了 sourceMap?
在Node.js中调试时遇到报错行数不准确的问题,通常与源代码的转译(如通过Babel或TypeScript)或压缩(如通过UglifyJS或Terser)有关。这些处理步骤会改变原始代码的结构,从而导致错误堆栈中的行号与源代码不匹配。
以下是一些可能的解决方案:
-
Source Maps: 如果你在使用Babel或TypeScript,确保生成了source maps。Source maps是一种映射文件,它可以将转换后的代码位置映射回原始源代码的位置。
对于Babel,可以在
.babelrc
或babel.config.js
中添加:{ "sourceMaps": true }
对于TypeScript,使用
tsc
编译时添加--sourceMap
标志。 -
Node.js配置: 确保Node.js运行时能够识别和使用source maps。如果你在使用如Webpack这样的打包工具,确保它配置为生成source maps,并且Node.js的
--enable-source-maps
标志被启用(Node.js v14+支持)。 -
调试工具: 使用支持source maps的调试工具,如VSCode。VSCode可以自动读取和使用source maps,从而在调试时显示正确的源代码和行号。
-
避免压缩: 在开发环境中,避免使用代码压缩工具。压缩代码会进一步混淆错误堆栈,使得调试更加困难。
通过上述方法,你应该能够解决Node.js调试时报错行数不准确的问题。如果问题依旧存在,可能需要检查具体的构建和配置细节。