我正在尝试将振幅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 {
答案 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