我正在努力解决类库@datadog/browser上的打字问题--朗姆酒:
Error: node_modules/@datadog/browser-rum-core/src/domain/configuration.ts:100:3
error TS2322: Type '{ applicationId: string; version: string; actionNameAttribute: string; premiumSampleRate: number; allowedTracingOrigins: readonly (string | RegExp)[]; tracingSampleRate: number; excludedActivityUrls: readonly (string | RegExp)[]; trackInteractions: boolean; trackFrustrations: boolean; trackViewsManually: boolean; de...' is not assignable to type 'RumConfiguration'.
Types of property 'allowedTracingOrigins' are incompatible.
The type 'readonly (string | RegExp)[]' is 'readonly' and cannot be assigned to the mutable type '(string | RegExp)[]'.在实现上,不引发任何类型记录错误,它只来自库。
依赖关系:
Angular@12
typescript@4.3.5
@datadog/browser-rum@4.17.2
node@12.20.2执行情况:
import {
APP_INITIALIZER,
FactoryProvider,
} from '@angular/core';
import { Environment } from '@shared/base/class/environment.class';
import { RumEvent } from '@datadog/browser-rum-core/src/rumEvent.types';
import { RumEventDomainContext } from '@datadog/browser-rum-core/src/domainContext.types';
import { datadogRum } from '@datadog/browser-rum';
function factory(...dependencies: [Environment]) {
return () => init(...dependencies);
}
function init(environment: Environment): Promise<void> {
return new Promise((resolve) => {
if (!environment.dataDog) {
return resolve();
}
datadogRum.init({
applicationId: environment?.dataDog?.applicationId,
clientToken: environment?.dataDog?.clientToken,
site: environment?.dataDog?.site,
service: environment?.dataDog?.service,
env: environment.env,
version: environment.appVersion,
sampleRate: environment?.dataDog?.sampleRate || 100,
premiumSampleRate: environment?.dataDog?.premiumSampleRate || 100,
trackInteractions: environment?.dataDog?.trackInteractions || false,
allowedTracingOrigins: [] as ReadonlyArray<any>,
beforeSend
});
datadogRum.onReady(() => resolve());
});
function beforeSend(event: RumEvent, context: RumEventDomainContext) {
if (event.view.url.includes('?')) {
event.view.url = event.view.url.split('?')[0];
}
if (event.type === 'resource' && event.resource.url.includes('?')) {
event.resource.url = event.resource.url.split('?')[0];
}
}
}
export const DatadogInitializationProvider: FactoryProvider = {
provide: APP_INITIALIZER,
useFactory: factory,
deps: [Environment],
multi: true,
};你们中有谁遇到过同样的问题吗?
提前谢谢你,祝你一天/晚上愉快!
发布于 2022-09-22 07:58:19
这个问题是由于使用了来自浏览器-朗姆酒核心的类型,而不是浏览器-朗姆酒:
import { RumEvent } from '@datadog/browser-rum-core/src/rumEvent.types';
import { RumEventDomainContext } from '@datadog/browser-rum-core/src/domainContext.types';
import { datadogRum } from '@datadog/browser-rum';而不是
import { datadogRum, RumEventDomainContext, RumEvent } from '@datadog/browser-rum';https://stackoverflow.com/questions/73490870
复制相似问题