Express.js 集成指南
📦 安装
npm install @anima/express
🚀 使用方法
基础集成
const express = require('express');
const anima = require('@anima/express');
const app = express();
// 开发环境自动启用隧道
if (process.env.NODE_ENV === 'development') {
app.use(anima({
token: process.env.ANIMA_TOKEN,
subdomain: 'myapp', // 可选:自定义子域名
autoStart: true,
onReady: (url) => {
console.log(`🌐 公网地址: ${url}`);
}
}));
}
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server started on http://localhost:3000');
});
运行
ANIMA_TOKEN=your-token npm start
# 输出:
# Server started on http://localhost:3000
# 🌐 公网地址: https://myapp.anima4.cn
⚙️ 配置选项
app.use(anima({
// 必需配置
token: process.env.ANIMA_TOKEN,
// 隧道配置
subdomain: 'myapp',
region: 'cn-shanghai',
// 功能开 关
enabled: process.env.NODE_ENV === 'development',
autoStart: true,
openBrowser: true,
copyToClipboard: true,
// 安全配置
allowedIPs: ['192.168.1.0/24'],
password: 'secret',
// 回调函数
onReady: (url) => {
console.log(`🚀 隧道就绪: ${url}`);
},
onError: (error) => {
console.error(`❌ 隧道错误: ${error}`);
},
onClose: () => {
console.log('🔒 隧道已关闭');
}
}));
🔧 高级用法
条件启用
// 只在特定条件下启用
const shouldEnableAnima = process.env.NODE_ENV === 'development' &&
process.env.ENABLE_TUNNEL === 'true';
if (shouldEnableAnima) {
app.use(anima({
token: process.env.ANIMA_TOKEN,
subdomain: process.env.ANIMA_SUBDOMAIN || 'myapp'
}));
}
自定义中间件
// 自定义中间件,在 Anima 之前执行
app.use((req, res, next) => {
console.log(`📝 请求: ${req.method} ${req.path}`);
next();
});
// Anima 隧道中间件
app.use(anima({
token: process.env.ANIMA_TOKEN,
requestLogger: true // 启用请求日志
}));
📝 示例项目
完整的 Express 应用
// app.js
const express = require('express');
const anima = require('@anima/express');
const cors = require('cors');
const app = express();
// 中间件
app.use(cors());
app.use(express.json());
// Anima 隧道(开发环境)
if (process.env.NODE_ENV === 'development') {
app.use(anima({
token: process.env.ANIMA_TOKEN,
subdomain: 'my-express-api',
onReady: (url) => {
console.log(`🌐 API 已暴露: ${url}`);
}
}));
}
// 路由
app.get('/api/users', (req, res) => {
res.json([
{ id: 1, name: 'John Doe' },
{ id: 2, name: 'Jane Smith' }
]);
});
app.post('/api/users', (req, res) => {
const { name } = req.body;
res.json({ id: Date.now(), name });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`🚀 服务器运行在端口 ${PORT}`);
});
环境配置
# .env
NODE_ENV=development
ANIMA_TOKEN=anima_xxxxxxxxxxxx
ANIMA_SUBDOMAIN=my-express-api