首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@datadog/browser-关于“allowedTracingOrigins”属性的rum编译问题

@datadog/browser-关于“allowedTracingOrigins”属性的rum编译问题
EN

Stack Overflow用户
提问于 2022-08-25 16:25:45
回答 1查看 239关注 0票数 -1

我正在努力解决类库@datadog/browser上的打字问题--朗姆酒:

代码语言:javascript
复制
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)[]'.

在实现上,不引发任何类型记录错误,它只来自库。

依赖关系:

代码语言:javascript
复制
Angular@12
typescript@4.3.5
@datadog/browser-rum@4.17.2
node@12.20.2

执行情况:

代码语言:javascript
复制
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,
};

你们中有谁遇到过同样的问题吗?

提前谢谢你,祝你一天/晚上愉快!

EN

回答 1

Stack Overflow用户

发布于 2022-09-22 07:58:19

这个问题是由于使用了来自浏览器-朗姆酒核心的类型,而不是浏览器-朗姆酒:

代码语言:javascript
复制
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';

而不是

代码语言:javascript
复制
import { datadogRum, RumEventDomainContext, RumEvent } from '@datadog/browser-rum';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73490870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档