ms-vite-plugin 1.1.1 → 1.1.3

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.
Files changed (94) hide show
  1. package/dist/build.js +6 -0
  2. package/dist/cli.js +98 -8
  3. package/dist/mcp/device-config.d.ts +55 -0
  4. package/dist/mcp/device-config.js +183 -0
  5. package/dist/mcp/docs-service.d.ts +65 -0
  6. package/dist/mcp/docs-service.js +168 -0
  7. package/dist/mcp/project.d.ts +16 -0
  8. package/dist/mcp/project.js +74 -0
  9. package/dist/mcp/tools.d.ts +18 -0
  10. package/dist/mcp/tools.js +825 -0
  11. package/dist/mcp/types.d.ts +32 -0
  12. package/dist/mcp/types.js +11 -0
  13. package/dist/mcp-server.d.ts +2 -0
  14. package/dist/mcp-server.js +86 -0
  15. package/dist/project.d.ts +89 -0
  16. package/dist/project.js +306 -0
  17. package/dist/version.d.ts +12 -0
  18. package/dist/version.js +63 -0
  19. package/docs/api/action.md +922 -0
  20. package/docs/api/appleocr.md +229 -0
  21. package/docs/api/config.md +122 -0
  22. package/docs/api/cryptoUtils.md +232 -0
  23. package/docs/api/device.md +374 -0
  24. package/docs/api/file.md +516 -0
  25. package/docs/api/global.md +617 -0
  26. package/docs/api/hid.md +1032 -0
  27. package/docs/api/hotUpdate.md +166 -0
  28. package/docs/api/http.md +548 -0
  29. package/docs/api/image.md +907 -0
  30. package/docs/api/ime.md +290 -0
  31. package/docs/api/logger.md +324 -0
  32. package/docs/api/media.md +248 -0
  33. package/docs/api/mysql.md +441 -0
  34. package/docs/api/netCard.md +200 -0
  35. package/docs/api/node.md +353 -0
  36. package/docs/api/paddleocr.md +246 -0
  37. package/docs/api/pip.md +242 -0
  38. package/docs/api/system.md +572 -0
  39. package/docs/api/thread.md +269 -0
  40. package/docs/api/tomatoocr.md +425 -0
  41. package/docs/api/tts.md +334 -0
  42. package/docs/api/ui.md +947 -0
  43. package/docs/api/utils.md +265 -0
  44. package/docs/api/yolo.md +310 -0
  45. package/docs/apicn/action.md +919 -0
  46. package/docs/apicn/appleocr.md +233 -0
  47. package/docs/apicn/config.md +120 -0
  48. package/docs/apicn/device.md +385 -0
  49. package/docs/apicn/file.md +511 -0
  50. package/docs/apicn/global.md +613 -0
  51. package/docs/apicn/hid.md +1033 -0
  52. package/docs/apicn/hotUpdate.md +170 -0
  53. package/docs/apicn/http.md +672 -0
  54. package/docs/apicn/image.md +924 -0
  55. package/docs/apicn/ime.md +290 -0
  56. package/docs/apicn/logger.md +332 -0
  57. package/docs/apicn/media.md +252 -0
  58. package/docs/apicn/mysql.md +445 -0
  59. package/docs/apicn/netCard.md +200 -0
  60. package/docs/apicn/node.md +362 -0
  61. package/docs/apicn/paddleocr.md +255 -0
  62. package/docs/apicn/pip.md +242 -0
  63. package/docs/apicn/system.md +575 -0
  64. package/docs/apicn/thread.md +269 -0
  65. package/docs/apicn/tts.md +338 -0
  66. package/docs/apicn/ui.md +933 -0
  67. package/docs/apicn/utils.md +265 -0
  68. package/docs/apicn/yolo.md +314 -0
  69. package/docs/apipython/action.md +901 -0
  70. package/docs/apipython/appleocr.md +226 -0
  71. package/docs/apipython/config.md +126 -0
  72. package/docs/apipython/cryptoUtils.md +246 -0
  73. package/docs/apipython/device.md +365 -0
  74. package/docs/apipython/file.md +476 -0
  75. package/docs/apipython/g.md +154 -0
  76. package/docs/apipython/hid.md +1059 -0
  77. package/docs/apipython/hotUpdate.md +154 -0
  78. package/docs/apipython/image.md +938 -0
  79. package/docs/apipython/ime.md +306 -0
  80. package/docs/apipython/logger.md +330 -0
  81. package/docs/apipython/media.md +221 -0
  82. package/docs/apipython/mysql.md +432 -0
  83. package/docs/apipython/netCard.md +219 -0
  84. package/docs/apipython/node.md +331 -0
  85. package/docs/apipython/overview.md +66 -0
  86. package/docs/apipython/paddleocr.md +211 -0
  87. package/docs/apipython/pip.md +231 -0
  88. package/docs/apipython/system.md +458 -0
  89. package/docs/apipython/tomatoocr.md +444 -0
  90. package/docs/apipython/tts.md +331 -0
  91. package/docs/apipython/ui.md +949 -0
  92. package/docs/apipython/utils.md +284 -0
  93. package/docs/apipython/yolo.md +281 -0
  94. package/package.json +8 -4
@@ -0,0 +1,290 @@
1
+ # 输入法模块 (IME)
2
+
3
+ 输入法模块提供了文本输入、剪贴板操作、键盘控制等功能,支持模拟用户的文本输入行为。
4
+
5
+ ## 前提条件
6
+
7
+ - 在系统设置中添加 快点 JS API 键盘
8
+ - 授予完全访问权限,并切换到 快点 JS API 键盘
9
+ - 如果添加了键盘,切换时找不到,请重启机器再试
10
+ - 注意键盘的方法,只有键盘弹出后才能调用
11
+
12
+ ## 输入法状态检查
13
+
14
+ ### isOk - 检查输入法键盘是否已弹出。
15
+
16
+ ```typescript
17
+ function isOk(): boolean;
18
+ ```
19
+
20
+ **返回值:**
21
+
22
+ | 类型 | 描述 |
23
+ | --------- | -------------------- |
24
+ | `boolean` | 输入法键盘是否已弹出 |
25
+
26
+ **示例:**
27
+
28
+ ```typescript
29
+ // 检查输入法状态,只有键盘弹出后面的方法才能调用
30
+ if (ime.isOk()) {
31
+ logi("输入法键盘已弹出");
32
+ } else {
33
+ logi("输入法键盘未弹出,请检查设置");
34
+ // 可能需要重新初始化或检查权限
35
+ }
36
+ ```
37
+
38
+ ### autoSwitchApiKeyboard - 自动切换到 API 键盘。
39
+
40
+ ```typescript
41
+ function autoSwitchApiKeyboard(): boolean;
42
+ ```
43
+
44
+ **返回值:**
45
+
46
+ | 类型 | 描述 |
47
+ | --------- | ------------------------------------------ |
48
+ | `boolean` | 是否成功切换并连接到 API 键盘,成功为 true |
49
+
50
+ - 该方法仅在系统设置中添加了快点JS API键盘 并且已授权完全访问权限时有效。
51
+ - Agent模式下,全面屏机型支持任意输入法切换快点JS API键盘,包括系统键盘和第三方键盘。
52
+ - Agent模式下,非全面屏机型仅支持系统键盘切换到快点JS API键盘,不支持第三方键盘切换。
53
+ - HID模式下,所有机型都能从任意输入法切换到快点JS API键盘,包括系统键盘和第三方键盘。
54
+
55
+ **示例:**
56
+
57
+ ```typescript
58
+ // 自动切换到 API 键盘(如未弹出会尝试切换)
59
+ if (ime.autoSwitchApiKeyboard()) {
60
+ logi("已切换到 API 键盘");
61
+ } else {
62
+ logi("切换失败,请检查键盘设置和完全访问权限");
63
+ }
64
+ ```
65
+
66
+ ## 文本获取和清除
67
+
68
+ ### getText - 获取当前输入框的文本内容。
69
+
70
+ ```typescript
71
+ function getText(): string;
72
+ ```
73
+
74
+ **返回值:**
75
+
76
+ | 类型 | 描述 |
77
+ | -------- | -------------------- |
78
+ | `string` | 当前输入框的文本内容 |
79
+
80
+ **示例:**
81
+
82
+ ```typescript
83
+ // 获取当前输入框文本
84
+ const currentText = ime.getText();
85
+ logi(`当前文本: ${currentText}`);
86
+ ```
87
+
88
+ ### clearText - 清空当前输入框的所有文本。
89
+
90
+ ```typescript
91
+ function clearText(): boolean;
92
+ ```
93
+
94
+ **返回值:**
95
+
96
+ | 类型 | 描述 |
97
+ | --------- | ---------------- |
98
+ | `boolean` | 清除操作是否成功 |
99
+
100
+ **示例:**
101
+
102
+ ```typescript
103
+ // 清空输入框
104
+ if (ime.clearText()) {
105
+ logi("文本清除成功");
106
+ } else {
107
+ logi("文本清除失败");
108
+ }
109
+ ```
110
+
111
+ ## 文本输入
112
+
113
+ ### input - 模拟输入文本到当前焦点的输入框。
114
+
115
+ ```typescript
116
+ function input(text: string): string;
117
+ ```
118
+
119
+ **参数说明:**
120
+
121
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
122
+ | ------ | ------ | -------- | ------ | ---------------- |
123
+ | `text` | string | 是 | - | 要输入的文本内容 |
124
+
125
+ **返回值:**
126
+
127
+ | 类型 | 描述 |
128
+ | -------- | -------------------------------- |
129
+ | `string` | 输入后的文本内容,失败为空字符串 |
130
+
131
+ **示例:**
132
+
133
+ ```typescript
134
+ // 基础文本输入
135
+ const textAfter = ime.input("Hello World");
136
+ logi(`输入后文本: ${textAfter}`);
137
+
138
+ // 输入中文
139
+ const zhTextAfter = ime.input("你好,世界!");
140
+ logi(`输入后文本: ${zhTextAfter}`);
141
+ ```
142
+
143
+ ### paste - 模拟粘贴操作,将剪贴板内容粘贴到当前输入框。
144
+
145
+ ```typescript
146
+ function paste(content?: string): string;
147
+ ```
148
+
149
+ **参数说明:**
150
+
151
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
152
+ | --------- | ------ | -------- | ------ | ------------------------------------------------ |
153
+ | `content` | string | 否 | - | 要粘贴的内容,可选参数,如果不传则使用剪贴板内容 |
154
+
155
+ **返回值:**
156
+
157
+ | 类型 | 描述 |
158
+ | -------- | -------------------------------- |
159
+ | `string` | 粘贴后的文本内容,失败为空字符串 |
160
+
161
+ **示例:**
162
+
163
+ ```typescript
164
+ // 基础粘贴操作(使用剪贴板内容)
165
+ const pasted = ime.paste();
166
+ logi(`粘贴后文本: ${pasted}`);
167
+
168
+ // 粘贴指定内容
169
+ const pastedSpecified = ime.paste("要粘贴的文本");
170
+ logi(`粘贴指定内容后文本: ${pastedSpecified}`);
171
+ ```
172
+
173
+ ## 键盘操作
174
+
175
+ ### pressDel - 模拟按下删除键(退格键)。
176
+
177
+ ```typescript
178
+ function pressDel(): string;
179
+ ```
180
+
181
+ **返回值:**
182
+
183
+ | 类型 | 描述 |
184
+ | -------- | -------------------------------------- |
185
+ | `string` | 删除后剩余文本内容,为空表示无更多内容 |
186
+
187
+ **示例:**
188
+
189
+ ```typescript
190
+ // 删除一个字符
191
+ const remaining = ime.pressDel();
192
+ logi(`删除后剩余文本: ${remaining}`);
193
+ ```
194
+
195
+ ### pressEnter - 模拟按下回车键。
196
+
197
+ ```typescript
198
+ function pressEnter(): boolean;
199
+ ```
200
+
201
+ **返回值:**
202
+
203
+ | 类型 | 描述 |
204
+ | --------- | ---------------- |
205
+ | `boolean` | 回车操作是否成功 |
206
+
207
+ **示例:**
208
+
209
+ ```typescript
210
+ // 按下回车键
211
+ if (ime.pressEnter()) {
212
+ logi("回车键按下成功");
213
+ } else {
214
+ logi("回车键按下失败");
215
+ }
216
+ ```
217
+
218
+ ### dismiss - 隐藏键盘。
219
+
220
+ ```typescript
221
+ function dismiss(): boolean;
222
+ ```
223
+
224
+ **返回值:**
225
+
226
+ | 类型 | 描述 |
227
+ | --------- | ---------------- |
228
+ | `boolean` | 隐藏操作是否成功 |
229
+
230
+ **示例:**
231
+
232
+ ```typescript
233
+ // 隐藏键盘
234
+ if (ime.dismiss()) {
235
+ logi("键盘隐藏成功");
236
+ } else {
237
+ logi("键盘隐藏失败");
238
+ }
239
+ ```
240
+
241
+ ## 剪贴板操作
242
+
243
+ ### getClipboard - 获取剪贴板内容。
244
+
245
+ ```typescript
246
+ function getClipboard(): string;
247
+ ```
248
+
249
+ **返回值:**
250
+
251
+ | 类型 | 描述 |
252
+ | -------- | ------------------ |
253
+ | `string` | 剪贴板中的文本内容 |
254
+
255
+ **示例:**
256
+
257
+ ```typescript
258
+ // 获取剪贴板内容
259
+ const clipboardText = ime.getClipboard();
260
+ logi(`剪贴板内容: ${clipboardText}`);
261
+ ```
262
+
263
+ ### setClipboard - 设置剪贴板内容。
264
+
265
+ ```typescript
266
+ function setClipboard(text: string): boolean;
267
+ ```
268
+
269
+ **参数说明:**
270
+
271
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
272
+ | ------ | ------ | -------- | ------ | ------------------------ |
273
+ | `text` | string | 是 | - | 要设置到剪贴板的文本内容 |
274
+
275
+ **返回值:**
276
+
277
+ | 类型 | 描述 |
278
+ | --------- | ---------------- |
279
+ | `boolean` | 设置操作是否成功 |
280
+
281
+ **示例:**
282
+
283
+ ```typescript
284
+ // 设置剪贴板内容
285
+ if (ime.setClipboard("要复制的文本")) {
286
+ logi("剪贴板设置成功");
287
+ } else {
288
+ logi("剪贴板设置失败");
289
+ }
290
+ ```
@@ -0,0 +1,324 @@
1
+ # 日志模块 (Logger)
2
+
3
+ 日志模块提供了完整的日志记录功能,支持不同的日志级别、文件输出、日志管理等。
4
+
5
+ - **日志级别** 开发环境默认 `debug`,打包环境默认 `info`。如需自定义日志级别,可使用 `setLoggerLevel` 方法。
6
+
7
+ - **日志存储路径** 日志文件默认存储在我的 iPhone->应用名称的文件夹->Logger 目录中。
8
+
9
+ - **日志文件大小** 每个日志文件最大 10MB,超过会自动创建新文件。
10
+
11
+ - **日志文件数量** 最多保留 10 个日志文件,超过会自动删除旧文件。
12
+
13
+ - **关闭日志输出** 可使用 `setLoggerLevel("off")` 关闭所有日志输出。
14
+
15
+ - **关闭存储日志** 可使用 `setLogToFile(false)` 关闭将日志输出到文件的功能。
16
+
17
+ ## 日志级别
18
+
19
+ 日志模块支持以下级别(按严重程度排序):
20
+
21
+ 1. **error** - 错误日志,记录程序错误和异常
22
+ 2. **warn** - 警告日志,记录潜在问题
23
+ 3. **info** - 信息日志,记录一般信息
24
+ 4. **debug** - 调试日志,记录详细的调试信息
25
+ 5. **off** - 关闭日志输出
26
+
27
+ ## 日志配置
28
+
29
+ ### setLoggerLevel - 设置日志输出级别。
30
+
31
+ ```typescript
32
+ function setLoggerLevel(
33
+ level: "error" | "warn" | "debug" | "info" | "off"
34
+ ): void;
35
+ ```
36
+
37
+ **参数:**
38
+
39
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
40
+ | ------- | ------ | -------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | `level` | string | 是 | - | 日志级别 <br>`error` 只输出错误日志 <br>`warn` 输出警告和错误日志 <br>`info` 输出信息、警告和错误日志 <br>`debug` 输出所有级别的日志 <br>`off` 关闭所有日志输出 |
42
+
43
+ **默认值:**
44
+
45
+ - 开发环境:`"debug"`
46
+ - 生产环境:`"info"`
47
+
48
+ **示例:**
49
+
50
+ ```typescript
51
+ // 设置为调试级别(输出所有日志)
52
+ logger.setLoggerLevel("debug");
53
+
54
+ // 设置为信息级别(不输出调试日志)
55
+ logger.setLoggerLevel("info");
56
+
57
+ // 设置为错误级别(只输出错误日志)
58
+ logger.setLoggerLevel("error");
59
+
60
+ // 关闭所有日志
61
+ logger.setLoggerLevel("off");
62
+
63
+ // 根据环境动态设置
64
+ const isDevelopment = true; // 根据实际情况判断
65
+ logger.setLoggerLevel(isDevelopment ? "debug" : "info");
66
+ ```
67
+
68
+ ### setLogToFile - 设置是否将日志输出到文件。
69
+
70
+ ```typescript
71
+ function setLogToFile(enabled: boolean): void;
72
+ ```
73
+
74
+ **参数:**
75
+
76
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
77
+ | --------- | ------- | -------- | ------ | ------------------------- |
78
+ | `enabled` | boolean | 是 | - | 是否启用文件输出 默认开启 |
79
+
80
+ **示例:**
81
+
82
+ ```typescript
83
+ // 启用文件日志(默认)
84
+ logger.setLogToFile(true);
85
+
86
+ // 禁用文件日志(只在控制台输出)
87
+ logger.setLogToFile(false);
88
+
89
+ // 根据配置动态设置
90
+ const enableFileLog = true; // 从配置文件读取
91
+ logger.setLogToFile(enableFileLog);
92
+ ```
93
+
94
+ ### setMaxLogFileCount - 设置最大日志文件数量 默认 10 个文件
95
+
96
+ ```typescript
97
+ function setMaxLogFileCount(count: number): void;
98
+ ```
99
+
100
+ **注意事项:**
101
+
102
+ - 1053 版本开始支持
103
+ - 使用此方法请放到你的代码最前面,确保在其他日志输出之前设置。
104
+
105
+ **参数:**
106
+
107
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
108
+ | ------- | ------ | -------- | ------ | ---------------- |
109
+ | `count` | number | 是 | - | 最大日志文件数量 |
110
+
111
+ **示例:**
112
+
113
+ ```typescript
114
+ // 设置最大日志文件数量为 5 个文件
115
+ logger.setMaxLogFileCount(5);
116
+ ```
117
+
118
+ ### setMaxLogFileSize - 设置最大日志文件大小 默认 10MB
119
+
120
+ ```typescript
121
+ function setMaxLogFileSize(size: number): void;
122
+ ```
123
+
124
+ **注意事项:**
125
+
126
+ - 1053 版本开始支持
127
+ - 使用此方法请放到你的代码最前面,确保在其他日志输出之前设置。
128
+
129
+ **参数:**
130
+
131
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
132
+ | ------ | ------ | -------- | ------ | ---------------------------- |
133
+ | `size` | number | 是 | - | 最大日志文件大小(单位:MB) |
134
+
135
+ **示例:**
136
+
137
+ ```typescript
138
+ // 设置最大日志文件大小为 5MB
139
+ logger.setMaxLogFileSize(5);
140
+ ```
141
+
142
+ ### resetLogFile - 重置日志文件,创建新的日志文件。
143
+
144
+ ```typescript
145
+ function resetLogFile(): void;
146
+ ```
147
+
148
+ **用途:**
149
+
150
+ - 避免单个日志文件过大
151
+ - 按时间或事件分割日志
152
+ - 清理历史日志
153
+
154
+ **示例:**
155
+
156
+ ```typescript
157
+ // 手动重置日志文件
158
+ logger.resetLogFile();
159
+ logger.info("日志文件已重置");
160
+
161
+ // 重置日志文件
162
+ function resetLogFile() {
163
+ logger.info("开始日志轮转");
164
+ logger.resetLogFile();
165
+ logger.info("日志轮转完成");
166
+ }
167
+
168
+ // 根据文件大小重置(需要配合文件系统检查)
169
+ function checkAndResetLog() {
170
+ // 这里需要配合文件模块检查日志文件大小
171
+ // 如果文件过大则重置
172
+ logger.resetLogFile();
173
+ }
174
+ ```
175
+
176
+ ## 日志输出方法
177
+
178
+ ### debug - 输出调试级别的日志。
179
+
180
+ ```typescript
181
+ function debug(...args: any[]): void;
182
+ ```
183
+
184
+ **参数:**
185
+
186
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
187
+ | ------ | ----- | -------- | ------ | ---------------- |
188
+ | `args` | any[] | 是 | - | 要输出的日志内容 |
189
+
190
+ **用途:**
191
+
192
+ - 详细的程序执行信息
193
+ - 变量值和状态信息
194
+ - 函数调用跟踪
195
+
196
+ **示例:**
197
+
198
+ ```typescript
199
+ logger.debug("程序开始执行");
200
+
201
+ // 函数调用跟踪
202
+ function processData(data: any) {
203
+ logger.debug(`processData 开始,参数: ${JSON.stringify(data)}`);
204
+
205
+ // 处理逻辑...
206
+
207
+ logger.debug("processData 完成");
208
+ }
209
+ ```
210
+
211
+ ### info - 输出信息级别的日志。
212
+
213
+ ```typescript
214
+ function info(...args: any[]): void;
215
+ ```
216
+
217
+ **参数:**
218
+
219
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
220
+ | ------ | ----- | -------- | ------ | ---------------- |
221
+ | `args` | any[] | 是 | - | 要输出的日志内容 |
222
+
223
+ **用途:**
224
+
225
+ - 程序正常运行信息
226
+ - 重要操作的确认
227
+ - 状态变更通知
228
+
229
+ **示例:**
230
+
231
+ ```typescript
232
+ logger.info("应用程序启动成功");
233
+ logger.info("用户登录成功");
234
+ logger.info("文件下载完成");
235
+ logger.info(`处理了 ${count} 条记录`);
236
+
237
+ // 操作确认
238
+ function saveSettings(settings: any) {
239
+ // 保存设置...
240
+ logger.info("设置已保存");
241
+ }
242
+ ```
243
+
244
+ ### warn - 输出警告级别的日志。
245
+
246
+ ```typescript
247
+ function warn(...args: any[]): void;
248
+ ```
249
+
250
+ **参数:**
251
+
252
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
253
+ | ------ | ----- | -------- | ------ | ---------------- |
254
+ | `args` | any[] | 是 | - | 要输出的日志内容 |
255
+
256
+ **用途:**
257
+
258
+ - 潜在的问题
259
+ - 不推荐的操作
260
+ - 性能警告
261
+ - 兼容性问题
262
+
263
+ **示例:**
264
+
265
+ ```typescript
266
+ logw("电池电量低于 20%");
267
+ logw("网络连接不稳定");
268
+ logw("使用了已废弃的 API");
269
+ logw("内存使用率较高");
270
+
271
+ // 条件警告
272
+ const battery = device.getBatteryInfo();
273
+ if (battery.level < 20) {
274
+ logw(`电池电量不足: ${battery.level}%`);
275
+ }
276
+
277
+ // 性能警告
278
+ function performHeavyTask() {
279
+ const startTime = Date.now();
280
+
281
+ // 执行耗时任务...
282
+
283
+ const duration = Date.now() - startTime;
284
+ if (duration > 5000) {
285
+ logw(`任务执行时间过长: ${duration}ms`);
286
+ }
287
+ }
288
+ ```
289
+
290
+ ### error - 输出错误级别的日志。
291
+
292
+ ```typescript
293
+ function error(...args: any[]): void;
294
+ ```
295
+
296
+ **参数:**
297
+
298
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
299
+ | ------ | ----- | -------- | ------ | ---------------- |
300
+ | `args` | any[] | 是 | - | 要输出的日志内容 |
301
+
302
+ **用途:**
303
+
304
+ - 程序错误和异常
305
+ - 操作失败
306
+ - 系统错误
307
+ - 致命问题
308
+
309
+ **示例:**
310
+
311
+ ```typescript
312
+ logger.error("网络请求失败");
313
+ logger.error("文件读取错误");
314
+ logger.error("数据库连接失败");
315
+ logger.error(`未知错误: ${error.message}`);
316
+
317
+ // 异常处理
318
+ try {
319
+ // 可能出错的操作
320
+ const result = riskyOperation();
321
+ } catch (error) {
322
+ logger.error(`操作失败: ${error.message}`);
323
+ }
324
+ ```