如何跟踪JavascriptException index.android.bundle:424:4194到JS源代码中的行号?

Ed *_*ain 5 stack-trace react-native

Google Play堆栈跟踪指出崩溃的原因:

com.facebook.react.modules.core.JavascriptException: addWaypointDone
    index.android.bundle:424:4194
Run Code Online (Sandbox Code Playgroud)

我从apk中提取了index.android.bundle.

如何从424:4194获得JS源代码行号?

谢谢Daniel.您的方法从命令行为我工作!

我尝试将其添加到android/app/react.gradle但我找不到./android目录下的source.map文件.

commandLine "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}”,
"--sourcemap-output", "source.map",
"--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets dest", resourcesDir
Run Code Online (Sandbox Code Playgroud)

有没有办法自动生成source.map文件?

提前致谢,

Dan*_*dow 6

要获得准确的位置,您需要一张源地图.如果您没有为部署保留这些部署,则可以重新生成它.

  • 查看从VCS部署的确切版本
  • 将它与源映射输出捆绑在一起:( react-native bundle --entry-file index.android.js --platform android --dev false --sourcemap-output source.map --bundle-output main.jsbundle确保使用您在发行版中使用的完全相同的依赖版本)
  • 创建findpos.js包含以下代码的文件:

findpos.js

var sourceMap = require('source-map');
var fs = require('fs');

var sourcemap = JSON.parse(fs.readFileSync('source.map', 'utf8'));

var smc = new sourceMap.SourceMapConsumer(sourcemap);

console.log(smc.originalPositionFor({
  line: 424,
  column: 4194
}));
Run Code Online (Sandbox Code Playgroud)
  • 执行脚本 node findpos.js

您应该获得错误的确切位置(文件,行和列).