问题描述
我在我的angular7应用程序中使用matomo(以前是piwik)进行网站分析。
根据文档,我将跟踪代码粘贴到应用程序的index.html文件中。内容如下:
<script type="text/javascript">
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//example.com/";
_paq.push(['setTrackerUrl',u+'matomo.PHP']);
_paq.push(['setSiteId','43']);
var d=document,g=d.createElement('script'),s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
因此,这有助于从example.com/matomo.js网址加载matomo.js静态文件。这将公开全局变量_paq。
现在,我想在我的matomo.service.ts文件中使用此全局变量来跟踪事件。由于_paq不是角度变量,因此我在matomo.service.ts文件中明确声明了这样的内容:
declare let _paq: any[][];
现在,我可以在此服务文件中创建不同的方法,以将分析数据推送到服务器。
matomo.service.ts
...
declare let _paq: any[][];
...
trackEvents(category,action,label) {
_paq.push(['trackEvent',category,label];
}
这在任何组件(例如示例)中都能很好地发挥作用
app.component.ts
constructor(private matomoService: matomoService) {}
trackEvent(category,label) {
this.matomoService.trackEvents(category,label);
}
一切正常,直到这里。但是,当我尝试运行单元测试时,它会使调用此方法的所有组件(this.matomoService.trackEvents(...)失败,并显示错误:
参考错误:未定义_paq
我尝试了其他类似问题中建议的不同方法,但是没有用。
任何人都可以在这里帮助我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)