在Sails.js/Node.js中安装@braze/sdk-web并添加自定义事件报错求解
Sails.js/Node.js 环境下 @braze/sdk-web 集成与报错排查方案
正确安装与自定义事件实现
首先明确依赖适用场景:@braze/sdk-web为浏览器端专用SDK,仅可在前端运行环境下导入使用,若需在Sails服务端调用Braze能力,需安装服务端专用的@braze/node-sdk。
前端侧集成(使用@braze/sdk-web)
- 安装依赖:在项目根目录执行命令
npm install @braze/sdk-web --save
- 导入初始化:仅在Sails项目的前端资源文件(
assets/目录下的JS文件、页面模板的前端脚本块)中导入SDK,禁止在服务端逻辑文件中导入
import * as braze from "@braze/sdk-web"; // 初始化配置 braze.initialize("你的Braze前端SDK密钥", { baseUrl: "对应Braze实例的服务地址", enableLogging: false }); // 启动会话 braze.openSession();
- 上报自定义事件
// 触发自定义事件时调用,可传入自定义属性 braze.logCustomEvent("自定义事件名称", { "action_source": "navigation_click", "user_level": 3 });
服务端侧集成(使用@braze/node-sdk)
- 安装依赖
npm install @braze/node-sdk --save
- 在服务端逻辑(控制器、服务、定时任务等)中初始化调用
const Braze = require('@braze/node-sdk'); // 初始化客户端 const brazeClient = new Braze({ apiKey: '你的Braze REST API密钥', restUrl: '对应Braze实例的REST接口地址' }); // 上报自定义事件 const trackResult = await brazeClient.users.track({ events: [ { external_id: '用户唯一标识ID', name: '自定义事件名称', time: new Date(), properties: { "order_amount": 199, "pay_channel": "alipay" } } ] });
服务启动报错排查步骤
Sails服务启动崩溃自动重启,90%以上的场景是错误地在服务端执行的代码中导入了@braze/sdk-web,该包依赖浏览器端的window、document等全局对象,Node.js环境不存在相关对象,导入即会抛出未定义异常。可按以下步骤定位解决:
- 全局搜索项目中所有
import "@braze/sdk-web"、require("@braze/sdk-web")语句,确认导入位置是否为api/、config/等服务端运行的目录,若是直接删除该导入,替换为服务端专用的@braze/node-sdk即可。 - 执行
sails lift --verbose启动服务,查看控制台输出的详细错误栈,定位具体报错的文件和代码行,确认是否为SDK导入或初始化触发的异常。 - 删除项目的
node_modules目录和package-lock.json文件,重新执行npm install,排查依赖版本冲突导致的启动报错。 - 检查
config/bootstrap.js等启动时自动加载的配置文件,确认没有错误写入web版SDK的初始化逻辑。 - 若使用自定义打包流程,检查打包配置是否将
@braze/sdk-web打包到了服务端执行的代码 bundle 中,调整配置将该依赖仅纳入前端资源打包范围。
内容的提问来源于stack exchange,提问作者vijit nagar
相关产品推荐
相关产品推荐

