Node.js SDK
快速开始
安装 SDK、配置凭证,并使用 Playwright 连接远程浏览器。
仓库运行准备
如果你希望直接运行 SDK 仓库里的示例代码,可以按下面步骤操作:
1. 安装示例依赖
git clone <repository-url>
cd lexmount-js-sdk/examples
npm install2. 配置环境变量
在 examples 目录创建 .env 文件:
LEXMOUNT_API_KEY=your-api-key-here
LEXMOUNT_PROJECT_ID=your-project-id-here
# 可选
LEXMOUNT_BASE_URL=https://api.lexmount.cn3. 运行示例
npm run build
cd examples
npm run playwright-basic
npm run session-management
npm run context-basic基础使用
import { Lexmount } from 'lexmount';
const client = new Lexmount({
apiKey: process.env.LEXMOUNT_API_KEY,
projectId: process.env.LEXMOUNT_PROJECT_ID,
});
const session = await client.sessions.create();
console.log(`Session ID: ${session.id}`);
console.log(`Connect URL: ${session.connectUrl}`);
await session.close();
client.close();直接使用环境变量
import { Lexmount } from 'lexmount';
const client = new Lexmount();
const session = await client.sessions.create({ browserMode: 'normal' });
console.log(session.id);
await session.close();
client.close();与 Playwright 集成
import { chromium } from 'playwright';
import { Lexmount } from 'lexmount';
const client = new Lexmount();
const session = await client.sessions.create();
const browser = await chromium.connectOverCDP(session.connectUrl);
const context = browser.contexts()[0];
const page = context.pages()[0] ?? (await context.newPage());
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();
await session.close();
client.close();构造函数说明
配置项
import { Lexmount } from 'lexmount';
const client = new Lexmount({
apiKey: 'your-api-key',
projectId: 'your-project-id',
baseUrl: 'https://api.lexmount.cn',
timeout: 60_000,
logLevel: 'INFO',
});创建会话
const session = await client.sessions.create({
browserMode: 'normal',
});
console.log(session.id);
console.log(session.connectUrl);会话超时由平台统一管理。如果会话已经到达配置的超时时间,但平台在最近 2 分钟内仍然看到了来自客户端的 CDP 流量,那么清理会被延后,直到这段活跃窗口结束。
查询会话
const result = await client.sessions.list({ status: 'active' });
console.log(result.pagination.totalCount);
for (const session of result) {
console.log(`${session.id}: ${session.status}`);
}错误处理
import {
AuthenticationError,
Lexmount,
NetworkError,
TimeoutError,
} from 'lexmount';
try {
const client = new Lexmount();
await client.sessions.create();
} catch (error) {
if (error instanceof AuthenticationError) {
console.error('凭证无效');
} else if (error instanceof TimeoutError) {
console.error('请求超时');
} else if (error instanceof NetworkError) {
console.error('网络连接失败');
} else {
throw error;
}
}日志
import { setLogLevel } from 'lexmount';
setLogLevel('DEBUG');
Lexmount 文档