英文:
Uploading source maps in sentry has no effect
问题
我想要将Flutter web的源映射上传到Sentry,但我的Sentry问题仍然出现在缩小的代码文件中。
在Sentry中,我在实际异常之上有以下错误:
> 处理此事件时出现4个问题 未知错误 折叠
> 源
> http://localhost:50326/.pub-cache/hosted/pub.dev/dio-5.3.0/lib/src/dio_mixin.dart
> Sourcemap http://localhost:50326/main.dart.js.map Symbolicator 类型
> missing_source_content 未知错误
>
> 折叠 源
> org-dartlang-sdk:///dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart
> Sourcemap http://localhost:50326/main.dart.js.map Symbolicator 类型
> missing_source_content 未知错误
>
> 折叠 源
> org-dartlang-sdk:///dart-sdk/lib/async/future_impl.dart Sourcemap
> http://localhost:50326/main.dart.js.map Symbolicator 类型
> missing_source_content 未知错误
>
> 折叠 源 org-dartlang-sdk:///dart-sdk/lib/async/zone.dart
> Sourcemap http://localhost:50326/main.dart.js.map Symbolicator 类型
> missing_source_content
图片:
这是我的pubspec.yaml文件中的配置:
sentry:
upload_debug_symbols: true
upload_source_maps: true
upload_sources: false
project: qa
release: vepo@0.0.2+1
org: vepo-ut
auth_token: my_secret_auth_token
wait_for_processing: true
log_level: error
commits: auto
ignore_missing: true
我运行了以下命令:
最初,我只运行了以下命令:
dart run sentry_dart_plugin
但我在Sentry中收到了missing_source_content错误,所以我尝试了以下命令,参考了这个Stack Overflow答案(其中有一个评论说它不起作用):
sentry-cli releases new vepo@0.0.2+1 --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
sentry-cli releases files $SENTRY_RELEASE upload-sourcemaps . \
--ext dart \
--rewrite --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
sentry-cli releases files vepo@0.0.2+1 upload-sourcemaps build/web/main.dart.js.map --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
sentry-cli releases finalize vepo@0.0.2+1 --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
但我仍然收到相同的错误。
我通过JSON文件将以下环境变量传递给我的应用程序:
{
"foo": "qa",
"APP_DISPLAY_NAME": "Vepo Qa",
"SENTRY_DSN": "https://xxx.ingest.sentry.io/4505594353287168",
"SENTRY_ENVIRONMENT": "qa",
"SENTRY_RELEASE": "vepo@0.0.2+1"
}
这些环境变量在我的main_qa.dart文件中运行。我已经验证了环境变量的正确性:
await SentryFlutter.init(
(options) {
const x = String.fromEnvironment('SENTRY_DSN', defaultValue: '');
const y = String.fromEnvironment('SENTRY_RELEASE');
const z = String.fromEnvironment('SENTRY_ENVIRONMENT', defaultValue: '');
options.dsn =
// 'https://xxx.ingest.sentry.io/4505594353287168';
const String.fromEnvironment('SENTRY_DSN', defaultValue: '');
options.tracesSampleRate = 1.0;
options.release = const String.fromEnvironment('SENTRY_RELEASE');
// options.environment =
// // options.environment = EnvironmentConstants.of().name;
// const String.fromEnvironment('SENTRY_ENVIRONMENT', defaultValue: '');
},
appRunner: () => runApp(
ProviderScope(
observers: [RiverpodLogger()],
child: const VpMaterialApp(),
),
),
);
如何摆脱这些错误并在Sentry中使用源映射?
英文:
I want to upload source maps to sentry for Flutter web, but my sentry issues still appear in minified code files.
I have these errors in sentry above the actual exception:
> There were 4 problems processing this event Unknown error Collapse
> Source
> http://localhost:50326/.pub-cache/hosted/pub.dev/dio-5.3.0/lib/src/dio_mixin.dart
> Sourcemap http://localhost:50326/main.dart.js.map Symbolicator Type
> missing_source_content Unknown error
>
> Collapse Source
> org-dartlang-sdk:///dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart
> Sourcemap http://localhost:50326/main.dart.js.map Symbolicator Type
> missing_source_content Unknown error
>
> Collapse Source
> org-dartlang-sdk:///dart-sdk/lib/async/future_impl.dart Sourcemap
> http://localhost:50326/main.dart.js.map Symbolicator Type
> missing_source_content Unknown error
>
> Collapse Source org-dartlang-sdk:///dart-sdk/lib/async/zone.dart
> Sourcemap http://localhost:50326/main.dart.js.map Symbolicator Type
> missing_source_content
Photo:
This is in my pubspec.yaml:
sentry:
upload_debug_symbols: true
upload_source_maps: true
upload_sources: false
project: qa
release: vepo@0.0.2+1
org: vepo-ut
auth_token: my_secret_auth_token
wait_for_processing: true
log_level: error
commits: auto
ignore_missing: true
I have run these commands:
I initially just used:
dart run sentry_dart_plugin
And I got the missing_source_content error in sentry so I tried these commands, based off of this Stack Overflow answer (there is a comment saying it doesn't work though):
sentry-cli releases new vepo@0.0.2+1 --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
sentry-cli releases files $SENTRY_RELEASE upload-sourcemaps . \ --ext dart \
--rewrite --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
sentry-cli releases files vepo@0.0.2+1 upload-sourcemaps build/web/main.dart.js.map --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
sentry-cli releases finalize vepo@0.0.2+1 --org=vepo-ut --project=qa --auth-token=my_secret_auth_token
And I still get the same errors.
I'm passing in these environment vars to my app via a json file:
{
"foo": "qa",
"APP_DISPLAY_NAME": "Vepo Qa",
"SENTRY_DSN": "https://xxx.ingest.sentry.io/4505594353287168",
"SENTRY_ENVIRONMENT": "qa",
"SENTRY_RELEASE": "vepo@0.0.2+1"
}
And this is running in my main_qa.dart. I have verified that the environment variables are correct:
await SentryFlutter.init(
(options) {
const x = String.fromEnvironment('SENTRY_DSN', defaultValue: '');
const y = String.fromEnvironment('SENTRY_RELEASE');
const z = String.fromEnvironment('SENTRY_ENVIRONMENT', defaultValue: '');
options.dsn =
// 'https://xxx.ingest.sentry.io/4505594353287168';
const String.fromEnvironment('SENTRY_DSN', defaultValue: '');
options.tracesSampleRate = 1.0;
options.release = const String.fromEnvironment('SENTRY_RELEASE');
// options.environment =
// // options.environment = EnvironmentConstants.of().name;
// const String.fromEnvironment('SENTRY_ENVIRONMENT', defaultValue: '');
},
appRunner: () => runApp(
ProviderScope(
observers: [RiverpodLogger()],
child: const VpMaterialApp(),
),
),
);
How can I get rid of those errors and use source maps in sentry?
答案1
得分: 0
我在pubspec.yaml中更改了upload_sources: true
。这非常棘手,容易让你感到困惑,因为在Sentry问题列表中,它们仍然都显示在文件**"minified:a1a/"**中,当我点击问题时,我仍然会在Sentry中收到与问题中的错误相同的错误,但可以忽略,因为它们只针对第三方包。
尽管这些误导性的信号,我的应用程序的源代码显示在问题中的dart文件中,在缩小的第三方包代码之间。
最终的配置如下:
sentry:
upload_debug_symbols: true
upload_source_maps: true
upload_sources: true
project: qa
release: vepo@0.0.2+1
org: vepo-ut
auth_token: my_secret_auth_token
wait_for_processing: true
log_level: error
commits: auto
ignore_missing: true
然后确保使用以下环境变量构建它:
flutter build web -t lib/main_qa.dart --release --no-tree-shake-icons --source-maps --dart-define=SENTRY_DSN=https://xxx@yyy.ingest.sentry.io/zzz --dart-define=SENTRY_ENVIRONMENT=qa --dart-define=SENTRY_RELEASE=vepo@0.0.2+1
在main_qa.dart中:
await SentryFlutter.init(
(options) {
options.dsn =
const String.fromEnvironment('SENTRY_DSN', defaultValue: '');
options.tracesSampleRate = 1.0;
options.release = const String.fromEnvironment('SENTRY_RELEASE');
},
appRunner: () => runApp(
ProviderScope(
observers: [RiverpodLogger()],
child: const VpMaterialApp(),
),
),
);
然后,一旦所有这些都保存并推送到存储库:
dart run sentry_dart_plugin
甚至可以通过Codemagic使用以下后构建脚本运行:
#!/bin/sh
curl -sL https://sentry.io/get-cli/ | sh
echo -e "[3[92mrun3[0m] Uploading sourcemaps for $SENTRY_RELEASE"
dart run sentry_dart_plugin
请确保按照这些配置和脚本的步骤进行操作。
英文:
I changed upload_sources: true
in pubspec.yaml. So, this is super tricky and easy to throw you off because in the sentry issues list they still all say that they are in file "minified:a1a/" AND when I click on the issue I still get those errors in sentry that are in the question, but they can be ignored because they are only for third-party packages.
Despite those misleading signals, the source code of my own app is displayed in dart files in the issue, in between minified third party package code.
The final config ended up being:
sentry:
upload_debug_symbols: true
upload_source_maps: true
upload_sources: true
project: qa
release: vepo@0.0.2+1
org: vepo-ut
auth_token: my_secret_auth_token
wait_for_processing: true
log_level: error
commits: auto
ignore_missing: true
Then be sure to build it with the environment variables:
flutter build web -t lib/main_qa.dart --release --no-tree-shake-icons --source-maps --dart-define=SENTRY_DSN=https://xxx@yyy.ingest.sentry.io/zzz --dart-define=SENTRY_ENVIRONMENT=qa --dart-define=SENTRY_RELEASE=vepo@0.0.2+1
In main_qa.dart:
await SentryFlutter.init(
(options) {
options.dsn =
const String.fromEnvironment('SENTRY_DSN', defaultValue: '');
options.tracesSampleRate = 1.0;
options.release = const String.fromEnvironment('SENTRY_RELEASE');
},
appRunner: () => runApp(
ProviderScope(
observers: [RiverpodLogger()],
child: const VpMaterialApp(),
),
),
);
Then once all that is saved and pushed to the repo:
dart run sentry_dart_plugin
It even works from Codemagic with this post-build script:
#!/bin/sh
curl -sL https://sentry.io/get-cli/ | sh
echo -e "[3[92mrun3[0m] Uploading sourcemaps for $SENTRY_RELEASE"
dart run sentry_dart_plugin
答案2
得分: 0
@BeniaminoBaggins 的 release
和 dist
应该匹配。
配置 release: vepo@0.0.2+1
应该与 const String.fromEnvironment('SENTRY_RELEASE')
匹配。
此外,检查事件中的 dist
字段,如果它们不匹配,您可以在上传和初始化 SDK 时强制它匹配。
如果您无法解决问题,请随时在 https://github.com/getsentry/sentry-dart/issues 上提出问题,提供一个链接到 sentry.io 事件的链接,以便我可以双重检查元数据,甚至最好提供一个最小的可重现示例。
英文:
@BeniaminoBaggins the release
and dist
should match.
The configuration release: vepo@0.0.2+1
should match the const String.fromEnvironment('SENTRY_RELEASE')
.
Also, the dist
field, check it in the event on sentry.io and if they don't match, you can force it when uploading and initing the SDK.
Feel free to raise an issue on https://github.com/getsentry/sentry-dart/issues in case you cannot figure it out, a link to a sentry.io event would help so I can double-check the metadata, and even better a minimal reproducible example.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论