| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /**
- * 测试CommonJS格式的监控SDK bundle
- */
- // 在Node.js环境中测试CJS格式的bundle
- console.log("开始测试CommonJS格式的监控SDK");
- try {
- // 动态引入CJS格式的bundle
- const MonitorSDK = require("../dist/bundle-cjs.js");
- console.log("CommonJS格式的监控SDK已加载");
- console.log("MonitorSDK类型:", typeof MonitorSDK);
- // 注意:由于Node.js环境缺少浏览器API(如window、document、performance等)
- // 直接初始化可能会出错,所以我们只测试基本导入功能
- // 检查MonitorSDK构造函数是否存在
- if (typeof MonitorSDK === "function") {
- console.log("✅ MonitorSDK构造函数存在");
- } else {
- console.log("❌ MonitorSDK不是函数");
- }
- console.log("\n注意:由于Node.js环境缺少浏览器API,完整的SDK功能无法在此环境中测试。");
- console.log("完整的功能测试需要在浏览器环境中进行。");
- } catch (error) {
- console.error("❌ 加载CommonJS格式的bundle时出错:", error.message);
- }
- // 模拟浏览器环境的部分功能以测试SDK
- console.log("\n--- 模拟浏览器环境测试 ---");
- // 为Node.js环境模拟必要的浏览器API
- global.window = global;
- global.document = {
- addEventListener: function (event, handler) {
- console.log(`模拟添加${event}事件监听器`);
- },
- };
- global.performance = {
- timing: {
- navigationStart: Date.now(),
- domainLookupStart: Date.now(),
- domainLookupEnd: Date.now() + 1,
- connectStart: Date.now() + 1,
- connectEnd: Date.now() + 2,
- requestStart: Date.now() + 2,
- responseStart: Date.now() + 3,
- responseEnd: Date.now() + 4,
- domLoading: Date.now() + 5,
- domContentLoadedEventStart: Date.now() + 6,
- domContentLoadedEventEnd: Date.now() + 7,
- loadEventStart: Date.now() + 8,
- loadEventEnd: Date.now() + 9,
- },
- getEntriesByType: function (type) {
- console.log(`模拟获取${type}类型的性能条目`);
- return [];
- },
- };
- global.navigator = {
- userAgent: "Test Node Environment",
- sendBeacon: function (url, data) {
- console.log("模拟sendBeacon调用:", url, data);
- return true;
- },
- };
- global.fetch = function (url, options) {
- console.log("模拟fetch调用:", url, options);
- return Promise.resolve({
- ok: true,
- json: () => Promise.resolve({}),
- });
- };
- // 现在尝试动态加载并初始化SDK
- setTimeout(() => {
- try {
- // 重新require以确保使用新的全局变量
- delete require.cache[require.resolve("../dist/bundle-cjs.js")];
- const MonitorSDK = require("../dist/bundle-cjs.js");
- // 创建实例
- const monitor = new MonitorSDK({
- appId: "test-app",
- apiUrl: "http://localhost:3000/api/monitor",
- enableErrorTracking: true,
- enablePerformanceTracking: true,
- enableUserBehaviorTracking: false, // 避免在Node.js中使用document
- enableResourceTracking: true,
- sampleRate: 1.0,
- });
- console.log("✅ 成功创建MonitorSDK实例");
- // 测试错误上报功能
- if (monitor && typeof monitor.reportError === "function") {
- console.log("✅ reportError方法存在");
- monitor.reportError({
- type: "test_error",
- message: "测试错误",
- timestamp: Date.now(),
- });
- console.log("✅ 成功调用reportError方法");
- } else {
- console.log("❌ reportError方法不存在");
- }
- // 测试数据上报功能
- if (monitor && typeof monitor.reportData === "function") {
- console.log("✅ reportData方法存在");
- monitor.reportData({
- type: "test_data",
- message: "测试数据",
- timestamp: Date.now(),
- });
- console.log("✅ 成功调用reportData方法");
- } else {
- console.log("❌ reportData方法不存在");
- }
- } catch (error) {
- console.error("❌ 在模拟环境中初始化SDK时出错:", error.message);
- console.error("堆栈:", error.stack);
- }
- }, 100);
|