auto_error_fixer 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DLZstudio/AEF/config/setting.cfg +12 -0
- package/DLZstudio/AEF/log/log.txt +5 -0
- package/DLZstudio/AEF/views/panel.html +640 -0
- package/README.md +114 -0
- package/examples/simple-example.js +32 -0
- package/index.js +603 -0
- package/package.json +47 -0
package/README.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# AEF (Auto Error Fixer)
|
|
2
|
+
|
|
3
|
+
AEF (Auto Error Fixer) 是一个强大的Node.js库,用于自动检测、修复服务器错误,并在必要时重启服务器。它还提供了管理控制面板和邮件通知功能,能够帮助原本因BUG而无法运行的系统恢复正常运行。
|
|
4
|
+
|
|
5
|
+
## 特性
|
|
6
|
+
|
|
7
|
+
- 🔧 **自动错误修复** - 智能检测并修复多种常见服务器错误
|
|
8
|
+
- 🛡️ **智能错误处理** - 区分致命和非致命错误,避免不必要的重启
|
|
9
|
+
- 🔄 **自动重启** - 当遇到致命错误时自动重启服务器
|
|
10
|
+
- 📊 **实时日志** - 详细记录错误前后的情况
|
|
11
|
+
- ⚙️ **管理面板** - 通过Web界面管理AEF设置
|
|
12
|
+
- 📧 **邮件通知** - 在发生严重错误时发送邮件通知
|
|
13
|
+
- 🔁 **热重载配置** - 配置文件修改后自动生效
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install aef
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 使用方法
|
|
22
|
+
|
|
23
|
+
```javascript
|
|
24
|
+
const AEF = require('aef');
|
|
25
|
+
|
|
26
|
+
// 创建AEF实例
|
|
27
|
+
const aef = new AEF();
|
|
28
|
+
|
|
29
|
+
// 开始监听未捕获的异常
|
|
30
|
+
aef.handleUncaughtExceptions();
|
|
31
|
+
|
|
32
|
+
// 启动控制面板
|
|
33
|
+
aef.startPanel();
|
|
34
|
+
|
|
35
|
+
// 示例Express应用
|
|
36
|
+
const express = require('express');
|
|
37
|
+
const app = express();
|
|
38
|
+
const port = 3000;
|
|
39
|
+
|
|
40
|
+
app.get('/', (req, res) => {
|
|
41
|
+
res.send('Hello World!');
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// 使用AEF中间件处理错误
|
|
45
|
+
app.use(aef.middleware());
|
|
46
|
+
|
|
47
|
+
app.listen(port, () => {
|
|
48
|
+
console.log(`应用运行在 http://localhost:${port}`);
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 配置
|
|
53
|
+
|
|
54
|
+
AEF的配置文件位于 `./DLZstudio/AEF/config/setting.cfg`,使用YAML格式。
|
|
55
|
+
|
|
56
|
+
默认配置:
|
|
57
|
+
```yaml
|
|
58
|
+
password: "123456" # 控制面板密码,默认为123456
|
|
59
|
+
enablePanel: true # 是否启用控制面板
|
|
60
|
+
email: # 邮件配置
|
|
61
|
+
enabled: false # 是否启用邮件通知
|
|
62
|
+
host: "" # SMTP服务器地址
|
|
63
|
+
port: 587 # SMTP端口
|
|
64
|
+
secure: false # 是否使用SSL
|
|
65
|
+
user: "" # 发送邮箱用户名
|
|
66
|
+
pass: "" # 发送邮箱密码
|
|
67
|
+
to: "" # 接收邮箱地址
|
|
68
|
+
content: "# 服务器发生错误\n### AEF遇到了一个无法自动处理的错误,请手动修复\n### AEF正在尝试重启服务器" # 邮件内容,支持Markdown
|
|
69
|
+
autoRestart: true # 是否自动重启服务器
|
|
70
|
+
logLevel: "info" # 日志级别
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 支持的错误类型
|
|
74
|
+
|
|
75
|
+
AEF能够自动检测和处理以下类型的错误:
|
|
76
|
+
- 端口被占用 (EADDRINUSE)
|
|
77
|
+
- 连接被拒绝 (ECONNREFUSED)
|
|
78
|
+
- 文件未找到 (ENOENT) - AEF会尝试创建缺失的文件
|
|
79
|
+
- 权限不足 (EACCES) - AEF会尝试修改文件权限
|
|
80
|
+
- 磁盘空间不足 (ENOSPC)
|
|
81
|
+
- 数据库连接错误 (ECONNRESET) - AEF会尝试重新连接
|
|
82
|
+
- 超时错误 (ETIMEDOUT) - AEF会实施重试机制
|
|
83
|
+
- 网络错误 (NetworkError) - AEF会尝试重连
|
|
84
|
+
|
|
85
|
+
## 控制面板
|
|
86
|
+
|
|
87
|
+
AEF提供了一个Web管理界面,可通过以下URL访问:
|
|
88
|
+
```
|
|
89
|
+
http://your-server:3001/panel/AEF
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
默认密码是 `123456`(可在配置文件中修改)。
|
|
93
|
+
|
|
94
|
+
控制面板功能:
|
|
95
|
+
- 查看AEF运行状态
|
|
96
|
+
- 实时查看服务器日志
|
|
97
|
+
- 编辑配置文件(热重载)
|
|
98
|
+
- 手动启用/禁用AEF
|
|
99
|
+
- 手动重启服务器
|
|
100
|
+
|
|
101
|
+
## 如何帮助有问题的应用
|
|
102
|
+
|
|
103
|
+
AEF特别适用于修复有问题的应用程序:
|
|
104
|
+
|
|
105
|
+
1. **文件缺失问题**:当应用尝试访问不存在的文件时,AEF会自动创建这些文件
|
|
106
|
+
2. **权限问题**:当应用遇到权限错误时,AEF会尝试修复权限设置
|
|
107
|
+
3. **数据库连接问题**:当数据库连接失败时,AEF会实施重连策略
|
|
108
|
+
4. **网络问题**:当网络请求超时时,AEF会实施重试机制
|
|
109
|
+
|
|
110
|
+
通过这些功能,AEF可以帮助原本因各种问题而无法运行的应用程序恢复正常运行。
|
|
111
|
+
|
|
112
|
+
## 许可证
|
|
113
|
+
|
|
114
|
+
MIT
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// 简单的AEF使用示例
|
|
2
|
+
const AEF = require('../index.js');
|
|
3
|
+
const express = require('express');
|
|
4
|
+
|
|
5
|
+
// 创建AEF实例
|
|
6
|
+
const aef = new AEF();
|
|
7
|
+
|
|
8
|
+
// 开始监听未捕获的异常
|
|
9
|
+
aef.handleUncaughtExceptions();
|
|
10
|
+
|
|
11
|
+
// 启动控制面板
|
|
12
|
+
aef.startPanel();
|
|
13
|
+
|
|
14
|
+
// 创建Express应用
|
|
15
|
+
const app = express();
|
|
16
|
+
const port = 3000;
|
|
17
|
+
|
|
18
|
+
app.get('/', (req, res) => {
|
|
19
|
+
res.send(`
|
|
20
|
+
<h1>AEF 保护的应用</h1>
|
|
21
|
+
<p>此应用受到AEF (Auto Error Fixer) 保护</p>
|
|
22
|
+
<p><a href="/panel/AEF">访问AEF控制面板</a> (密码: 123456)</p>
|
|
23
|
+
`);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// 使用AEF中间件处理错误
|
|
27
|
+
app.use(aef.middleware());
|
|
28
|
+
|
|
29
|
+
app.listen(port, () => {
|
|
30
|
+
console.log(`示例应用运行在 http://localhost:${port}`);
|
|
31
|
+
console.log(`AEF控制面板: http://localhost:3001/panel/AEF`);
|
|
32
|
+
});
|