进行gatsby构建时

时间:2018-11-21 06:27:43

标签: javascript reactjs gatsby amplitude

我正在尝试将振幅js与React和Gatsby集成在一起。在进行gatsby开发人员时,一切都看起来不错,因为它发生在浏览器内部,但是当我尝试gatsby构建时,会收到以下错误,因为Gatsby构建发生在我们没有窗口对象的服务器上:

  

WebpackError:窗口未定义

amplitude.js:2428 〜/ amplitude-js / amplitude.js:2428:2

这是我的振幅模块:

import amplitude from 'amplitude-js';

amplitude.getInstance().init('API-KEY', null, {
  // optional configuration options
  saveEvents: true,
  includeUtm: true,
  includeReferrer: true,
});

Gatsby构建无法正常工作:未定义窗口。

如果我在项目中的任何地方都没有使用此零件,则错误指向该零件:

if (windowLocalStorageAvailable()) {
  localStorage = window.localStorage;
} else if (window.globalStorage) { // <- here

  // Firefox 2-3 use globalStorage
  // See https://developer.mozilla.org/en/dom/storage#globalStorage
  try {

1 个答案:

答案 0 :(得分:1)

发生此错误是因为Amplitude JS SDK期望位于浏览器窗口对象内部,并且有权访问窗口上下文以从cookie收集IP地址,操作系统,浏览器,device_id等属性。

您的应用是否可以发送事件的任何后端类型?

要将数据发送到Amplitude,您也不需要使用Amplitude SDK,并且您还具有REST端点。 https://help.amplitude.com/hc/en-us/articles/360032842391-HTTP-API-V2

HTTP API还具有第三方维护的nodejs包装器https://github.com/crookedneighbor/amplitude