null не является объектом (вычисление ‘InstrumentationConstants_1.InstrumentationConstants.BREADCRUMB_VISIBILITY_CRASHES_ONLY’)

#reactjs #react-native #appdynamics

#reactjs #реагирующий-собственный #динамика приложения

Вопрос:

Когда я настраиваю свое приложение React native с помощью appdynamics, приложение react native получает ошибку времени выполнения

‘null не является объектом (вычисление ‘InstrumentationConstants_1.InstrumentationConstants.BREADCRUMB_VISIBILITY_CRASHES_ONLY’)’

По мере интеграции с интеграцией все остается в порядке, но как только я устанавливаю, приложение перестает работать. После интеграции я использовал

 Instrumentation.start({
  appKey: "AD-AAB-AAY-BHY",
  collectorURL: "https://col.eum-appdynamics.com",
});
  

и

 import { Instrumentation } from "@appdynamics/react-native-agent";
  

в верхней части файла.

Также выполнил все шаги ручной ссылки для Android.

Есть ли что-то, чего мне здесь не хватает?

Ответ №1:

Я понимаю, что прошло много времени, но я все равно внесу свой вклад, так как это может помочь и другим людям.

В моем случае импорт инструментария в iOS вызвал эту ошибку; похоже, это проблема в последней версии @appdynamics /react-native-agent (версия 20.7.0 на момент написания).

Вместо этого я инициализировал AppDynamics в машинном коде (в файле AppDelegate.m) следующим образом:

 #import <ADEUMInstrumentation/ADEumInstrumentation.h>

...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
  ...

  ADEumAgentConfiguration *adeumAgentConfig = [[ADEumAgentConfiguration alloc] initWithAppKey:@"YOUR IOS KEY"];

  // AppDynamics swizzles some methods for making requests and may mess up other libraries; disable automatic instrumentation if it causes problems to you.
  adeumAgentConfig.enableAutoInstrument = NO;

  // Initialize AppDynamics
  [ADEumInstrumentation initWithConfiguration:adeumAgentConfig];

  // Leaving screnshots enabled may cause lag during touches; block screenshots if you experience that.
  [ADEumInstrumentation blockScreenshots];

  ...

  return YES;
}
  

Для получения дополнительной информации ознакомьтесь с руководством по iOS:
https://docs.appdynamics.com/display/PRO45/Instrument an iOS Application

Кроме того, я избегал импорта AppDynamics в javascript, требуя его во время выполнения только в Android.

 if (Platform.OS === 'android') {
    const { Instrumentation } = require('@appdynamics/react-native-agent');
    const appKey = 'YOUR ANDROID KEY';
    console.log(`Starting AppDynamics with key ${appKey}.`);
    Instrumentation.start({
      appKey,
    });
  }