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

时间:2016-06-14 22:40:05

标签: react-native stack-trace

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

throw new exception

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

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

谢谢丹尼尔。您的方法从命令行为我工作!

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

com.facebook.react.modules.core.JavascriptException: addWaypointDone
    index.android.bundle:424:4194

有没有办法自动构建source.map文件?

提前致谢,

2 个答案:

答案 0 :(得分: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
}));
  • 执行脚本node findpos.js

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

答案 1 :(得分:0)

如何使用Atom在index.android.bundle中找到异常源代码

  1. 从Google Play获取堆栈跟踪
  2. 使用zip扩展名重命名apk文件并解压缩apk
  3. 使用Atom或其他编辑器,打开提取的'' assets / index.android.bundle''
  4. 编辑>从堆栈跟踪转到Line,424:4194
  5. 从index.android.bundle中删除所有空格,并将行连接到一行。但它确定了罪魁祸首。