gpt4 book ai didi

javascript - 无法在 Ionic 3 应用程序中导入 Amplitude SDK

转载 作者:行者123 更新时间:2023-12-01 01:04:00 36 4
gpt4 key购买 nike

我正在尝试使用 Amplitude SDK 从我的 Ionic 3 应用程序获取统计信息。然而,由于该应用程序是用 TypeScript 编写的,具有一定的文件架构,因此它并不像 official documentation 中那么简单。 .

但是,我发现the @types/amplitude-js package我认为这会解决我所有的问题。但不幸的是,当我使用 ionic cordova run android --device 在设备上编译应用程序时,该应用程序无法加载,并且收到以下错误消息:

Uncaught Error: Encountered undefined provider! 
Usually this means you have a circular dependencies (might be caused by using 'barrel' index.ts files.

*sigh*

注意:当我运行 ionicserve 时也会出现此错误。

这是我一步一步所做的:

  • 我通过运行 npm install --save @types/amplitude-js 安装了 @types/amplitude-js。
  • 我通过运行 npm installamplitude-js 安装了原始 Amplitude SDK。我注意到有必要这样做,否则我的应用程序将无法仅使用 @type 包进行编译(这是有道理的)。
  • 我将以下行添加到我的 app.module.ts

import { AmplitudeClient } from 'amplitude-js';

[...]
@NgModule({
[...]
providers: [
AmplitudeClient,
[...]
]
});

  • 我还创建了一个 AmplitudeProvider,它将管理我的应用中的所有 Amplitude 事件:

import { Injectable } from '@angular/core';
import { HttpServiceProvider } from "../http-service/http-service";
import { AmplitudeClient } from 'amplitude-js';

/**
* AmplitudeProvider
* @description Handles Amplitude statistics
*/
@Injectable()
export class AmplitudeProvider {

constructor(
public http: HttpServiceProvider,
public amplitude: AmplitudeClient
) {
this.amplitude.init("MY_AMPLITUDE_KEY");
}

/**
* logEvent
* @description Logs an event in Amplitude
* @param eventTitle Title of the event
*/
public logEvent(title) {
// Do things not relevant here
}

}

我确信我的依赖注入(inject)和/或导入出了问题,但我不明白是什么。而且我没有看到任何循环依赖,因为 amplitude-js 包不是我制作的,也没有导入我的任何提供程序。

预先感谢任何为我指明正确方向的人!

最佳答案

AmplitudeClient 不是 Ionic Provider,因此,您无法导入它并将其放入类构造函数中。

要在您的提供程序中使用振幅,您需要导入振幅。您的代码应该与此类似。

import amplitude, { AmplitudeClient } from 'amplitude-js';

@Injectable()
export class AmplitudeProvider {

private client: AmplitudeClient;

constructor(
public http: HttpServiceProvider,
public database: DatabaseProvider
) {
this.client = amplitude.getInstance();
this.client.init("MY_AMPLITUDE_KEY");
}
}

关于javascript - 无法在 Ionic 3 应用程序中导入 Amplitude SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55797474/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com