当前位置: 首页 > 面试题库 >

如何在React Native for Production中添加源地图?

史旺
2023-03-14
问题内容

应用崩溃时,我收到如下错误日志:

致命异常:com.facebook.react.modules.core.JavascriptException:onSelect
index.android.bundle:20:7148 onPress index.android.bundle:20:2435

但这对我排除麻烦不是真的有帮助。如何启用源地图,以便能够找出问题所在?

UPDATE 2018 https://docs.expo.io/versions/latest/guides/using-
sentry.html
看起来很有希望!


问题答案:

对于源映射,这是我的处理方式:

在用于生产构建的bundle命令中,我告诉它生成源映射:

iOS:

react-native bundle --platform ios --entry-file index.ios.js --dev false --bundle-output ./ios/main.jsbundle --assets-dest ./ios --sourcemap-output ./sourcemap.js

Android-我必须实际修改android / app /
react.gradle文件,以获取在发布时生成的源地图。可能有一种更简单的方法,但是基本上您可以在bundleReleaseJsAndAssets方法中找到在哪个位置构建bundle命令并向其添加源映射位:

if (Os.isFamily(Os.FAMILY_WINDOWS)) {
    commandLine "cmd","/c", "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file",
        entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease, "--sourcemap-output", file("$buildDir/../../../sourcemap.js")
} else {
    commandLine "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file",
        entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease, "--sourcemap-output", file("$buildDir/../../../sourcemap.js")
}

输出路径看起来有些奇怪,但这使它位于您的根目录级别(与iOS相同。我想要这样。您显然可以将其放置在任何地方)。

然后,一旦您发现行号有错误,那就意味着什么都没有,您就可以通过“ source-map”
NPM程序包运行它。您可能会非常详细地介绍您的方法,但我只是简单地讲了:

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

fs.readFile('./sourcemap.js', 'utf8', function (err, data) {
    var smc = new sourceMap.SourceMapConsumer(data);

    console.log(smc.originalPositionFor({
        line: 16,
        column: 29356
    }));
});

上面示例输出中的行和列应替换为行和列编号的位置。

如果将源映射存储在某处,并且行和列号随着代码的更改而在构建之间进行更改,则这显然是最好的。但是,如果可以使用您选择的源代码控制设置返回到用于构建有问题的应用程序的提交,并使用命令的其他位重新生成捆绑包以生成源映射,则它应该非常接近。



 类似资料:
  • 对于一个项目,我正在创建不同的层,这些层都应该被写入一个geopackage。我正在使用QGIS 3.16.1和运行在Python 3.7上的QGIS中的Python控制台 我尝试了很多事情,但不知道如何做到这一点。这是我目前使用的。 问题是,在“测试”中。“gpkg”创建的层称为“测试”,而不是“点1”或“点2”。和第二个QgsVectorFileWriter。writeAsVectorForm

  • 问题内容: 这段代码返回:8或10或6作为循环后映射的长度。视频在这里, 游戏 在这里。 我看到新添加的元素进入范围,但无法解释为什么此循环随机停止吗? 问题答案: 规格:对于声明: 未指定地图的迭代顺序,并且不能保证每次迭代之间都相同。如果在迭代过程中删除了尚未到达的映射条目,则不会生成相应的迭代值。 如果在迭代过程中创建了映射条目,则该条目可能在迭代过程中产生或可以被跳过。 对于创建的每个条目

  • 我最近正在使用Azure管道,并且我的构建过程中有一个NuGet任务。此进度始终失败,因为 NuGet 源中没有名为“机器人实用性”的包。这是因为此包由我自己创建,并且仅存储在 Azure 项目中。 ##[错误]nuget命令失败,并出现退出代码(1)和错误(NU1101:找不到包BotUtive。源中不存在具有此ID的包:NuGetOrg 构建管道有可能到达Azure工件中的这个包吗?如果可以,

  • 我有一个名为AdminResource的父资源和一个名为AdminModuleResource的子资源。 父资源已正确安装HATEOAS链接: 子资源也正确安装了HATEOAS链接: 但是它的父资源已经失去了链接。 目前,在我的子管理模块资源中,父管理资源没有链接。事实上,汇编程序的toResources方法只提供子管理模块资源的链接。 你知道我如何在子管理模块资源中添加到父管理资源的链接吗? 编

  • 我试着用kotlin DSL测试5级。 生成的是: 然后我生成了一个kotlin app,测试如下: 然后我将前面生成的lib添加到文件夹: 更新 根据收到的意见,我做了以下工作: > 将库文件移动到文件夹: 将以下代码添加到: 而不是: 但仍然得到相同的错误:(

  • 问题内容: 如何在jsfiddle中添加JSON文件?我有一个JSON文件,但无法将其附加到jsfiddle中。我可以制作一个JSON对象并使用它,但是有什么方法可以将外部JSON文件添加到小提琴中? 问题答案: 您可以利用跨域资源共享(CORS)的功能来完成您的任务。 基本上,CORS的工作原理是,如果在HTTP响应中设置了标头,则无论AJAX加载的内容位于同一域还是其他域中,都可以在我们的脚本