我使用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:未定义文档
如果我将document
和window
替换为this.url
,我会收到此错误:
TypeError:无法设置未定义的属性“l”
答案 0 :(得分:0)
服务器无法直接访问客户端的DOM,这正是您尝试执行的操作。至少不是我所知道的。您在上面发布的代码似乎是通用的客户端代码,我相信这会执行一些DOM操作,以便在页面加载时将分析数据发送给Google。
但是,您可以从服务器代码中调用远程HTTP Web服务。这里会想到http包,但我相信Atmostphere上还有其他包。它允许您调用Web服务,我相信您可以找到有关如何直接从JS发送Google Analytics数据而不需要页面加载的示例。我做了一个快速的网络搜索,发现谷歌有一个analytics.js,似乎就是这样。并且,在Atmosphere for "analytics"上进行搜索时,至少找到了几个已将analytics.js JavaScript库包含到Meteor应用程序中的软件包。
答案 1 :(得分:0)