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。
验证步骤
- 部署修正后的代码后,触发URL变化操作,检查FullStory界面是否还会出现
Once set, page names cannot be changed错误。 - 在自定义页面上触发目标事件,等待一段时间后查看FullStory事件统计,确认事件数是否正常累加。
内容的提问来源于stack exchange,提问作者LucasRotsenViridios
相关产品推荐
相关产品推荐

