You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FullStory API创建页面事件未捕获及setVars调用异常咨询

FullStory自定义页面事件不跟踪且报错"Once set, page names cannot be changed"

问题描述

由于需跟踪的URL包含查询参数,我尝试通过FullStory的setVars API发送自定义页面数据。目前在FullStory Pages界面能看到通过API创建的页面,但针对这些页面创建的事件始终未被跟踪(事件数为0),同时界面出现API错误提示:Once set, page names cannot be changed。

每次URL变化时我都会调用以下代码,试图跟踪特定页面的点击事件:

// inside `const onChangeSelectedItem = (index: number)`
FullStory('setProperties', {
    type: 'page',
    properties: {
        pageName: dashboardIds[analyticsTabsEnum[market.toString()]][index].fullStoryName
    },
})

注:FullStory已正确配置,非自定义页面的事件可正常跟踪。

错误原因

Once set, page names cannot be changed 提示的核心是:FullStory中单个页面会话实例的pageName属性是只读的,一旦设置完成就无法修改。

你每次URL变化时直接调用setProperties修改同一个页面实例的pageName,违反了这个限制,导致API报错;同时这种重复修改操作会干扰FullStory对页面状态的识别,进而导致关联的事件无法被正确跟踪统计。

解决方案

要解决这个问题,需要在URL变化(路由切换)时先创建新的页面实例,再设置pageName,确保每个页面实例仅被设置一次pageName:

修正后的代码示例

在路由变化时,先调用newPage初始化新页面实例,同时传递自定义pageName:

// inside `const onChangeSelectedItem = (index: number)`
FullStory('newPage', undefined, {
  pageName: dashboardIds[analyticsTabsEnum[market.toString()]][index].fullStoryName
});

补充说明

  • newPage方法用于通知FullStory页面已切换(适用于单页应用场景),调用后会创建一个全新的页面会话实例,此时设置pageName是合法的。
  • 如果需要设置更多页面属性,可以在newPage之后调用setProperties,但注意不要再次修改pageName。

验证步骤

  1. 部署修正后的代码后,触发URL变化操作,检查FullStory界面是否还会出现Once set, page names cannot be changed错误。
  2. 在自定义页面上触发目标事件,等待一段时间后查看FullStory事件统计,确认事件数是否正常累加。

内容的提问来源于stack exchange,提问作者LucasRotsenViridios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:58:26