可以将数据从Meteor.js服务器端发送到Google Analytics吗?

时间:2014-12-30 23:48:54

标签: meteor google-analytics

我使用Meteor.js构建了一个应用程序。现在我将该应用程序扩展为API并仅使用JSON数据进行回复。当我的应用只存在服务器端时,如何将Google Analytics实施到其中?

代码段:

if (Meteor.isServer) {
  Meteor.startup(function () {
    Router.map(function() {
      this.route('methodExample', {
        path: '/api',
        where: 'server',
        action: function() {
            // standard GA code snippet
            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
            ga('create', 'UA-XXXXXXX-9', 'auto');
            ga('send', 'pageview');

        }
      });
    });
  });
}

我得到的错误是:

  

ReferenceError:未定义文档

如果我将documentwindow替换为this.url,我会收到此错误:

  

TypeError:无法设置未定义的属性“l”

2 个答案:

答案 0 :(得分:0)

服务器无法直接访问客户端的DOM,这正是您尝试执行的操作。至少不是我所知道的。您在上面发布的代码似乎是通用的客户端代码,我相信这会执行一些DOM操作,以便在页面加载时将分析数据发送给Google。

但是,您可以从服务器代码中调用远程HTTP Web服务。这里会想到http包,但我相信Atmostphere上还有其他包。它允许您调用Web服务,我相信您可以找到有关如何直接从JS发送Google Analytics数据而不需要页面加载的示例。我做了一个快速的网络搜索,发现谷歌有一个analytics.js,似乎就是这样。并且,在Atmosphere for "analytics"上进行搜索时,至少找到了几个已将analytics.js JavaScript库包含到Meteor应用程序中的软件包。

答案 1 :(得分:0)