# @dnlup/fastify-traps 中文文档

规范地址：https://npmcn.com/package/%40dnlup/fastify-traps/

版本：3\.1\.0
npm 元数据更新时间：2024-11-29T09:29:27.095Z
中文译文更新时间：2026-11-12T13:27:25.170Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dnlup/fastify-traps
原文对照：https://npmcn.com/package/%40dnlup/fastify-traps/?lang=original
项目主页：https://github.com/dnlup/fastify-traps#readme
源码仓库：https://github.com/dnlup/fastify-traps

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：9 kB，5 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2020-11-13T06:57:47.411Z
- 最新版本发布：2024-11-29T09:29:26.943Z
- 近 30 天下载量：26076（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 0 个）

## 中文简介

在SIGINT和SIGTERM信号上优雅地关闭服务器的快取插件

## 安装

```sh
npm install @dnlup/fastify-traps
```

也可以使用：`pnpm add @dnlup/fastify-traps`、`yarn add @dnlup/fastify-traps`、`bun add @dnlup/fastify-traps`

## README

# 固定陷阱

[![npm version](https://badge.fury.io/js/%40dnlup%2Ffastify-traps.svg)](https://badge.fury.io/js/%40dnlup%2Ffastify-traps) ![Tests](https://github.com/dnlup/fastify-traps/workflows/Tests/badge.svg) [![codecov](https://codecov.io/gh/dnlup/fastify-traps/branch/next/graph/badge.svg?token=93VKYKIKCJ)](https://codecov.io/gh/dnlup/fastify-traps) [![Known Vulnerabilities](https://snyk.io/test/github/dnlup/fastify-traps/badge.svg?targetFile=package.json)](https://snyk.io/test/github/dnlup/fastify-traps?targetFile=package.json)

> 在SIGINT和SIGTERM信号上优雅地关闭服务器的固接插件.

-   [安装](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-install)
-   [使用量](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-usage)
    
    -   [默认](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-default)
    -   [自定义关闭超时](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-custom-close-timeout)
    -   [自定义钩子](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-custom-hooks)
    
    -   [插件选项](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-plugin-options)
        -   [在符号( 符号) 上](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-onsignalsignal)
        -   [关闭( C)](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-onclose)
        -   [超时( 超时)](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-ontimeouttimeout)
        -   [错误( 错误)](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-onerrorerror)
-   [许可证](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-license)

## 安装

```bash
$ npm i @dnlup/fastify-traps
```

## 使用量

#### 默认

```js
const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')

fastify.register(traps)

fastify.get('/', (request, reply) => {
  reply.send({ ok: true })
})

fastify.listen(3000)
```

插件将使用实例日志打印一些信息, 如收到的信号 如果它能成功关闭固定实例.

#### 自定义关闭超时

默认情况下,插件会等30秒服务器关闭. 之后,它会带着代码退出进程 `1`。 。 。 .

您可以更改超时值 .

```js
const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')

fastify.register(traps, {
  timeout: 1000 // wait 1 second before forcing exiting
})

fastify.listen(3000)
```

#### 自定义钩子

插件允许注册自定义,同步函数来覆盖默认的钩子.

钩子的上下文与 `fastify` 实例,可以使用 `this` 以提及它.

```js
const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')

fastify.register(traps, {
  onSignal(signal) {
    this.log.debug(`Received signal ${signal}`)
  },
  onClose() {
    this.log.info('Server closed')
  },
  onTimeout(timeout) {
    this.log.error(`Forcing close after ${timeout} ms`)
  },
  onError(error) {
    this.log.error(`Uh oh: ${error.message}`)
  }
})

fastify.listen(3000)
```

### 插件选项

-   `timeout` `<number>`: 等待服务器关闭的毫秒数
-   `onSignal` `<function>`: 在信号自定义上 [钩子](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-onsignal)
-   `onClose` `<function>`: 在信号自定义上 [钩子](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-onclose)
-   `onTimeout` `<function>`: 在信号自定义上 [钩子](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-ontimeout)
-   `onError` `<function>`: 在信号自定义上 [钩子](https://npmcn.com/package/%40dnlup/fastify-traps/#readme-onerror)
-   `strict` `<boolean>`: 如果出现错误 `SIGINT` 或者说 `SIGTERM` 处理器已经注册 . **默认 :** `true`。 。 。 .

如前所言 钩子上下文与 `fastify` 实例,可以使用 `this` 以提及它.

#### 在符号( 符号) 上

-   `signal` `<string>`: 收到信号

插件收到时会叫这个钩子 `SIGINT` 或者说 `SIGTERM` 信号.

#### 关闭( C)

插件会在服务器关闭时调用此钩子 .

#### 超时( 超时)

-   `timeout` `<number>`: 超时的毫秒数

当等待服务器关闭的超时时, 插件会调用此钩子 .

#### 错误( 错误)

-   `error` `<Error|*>`: 关闭服务器时出错

当关闭服务器时出错时, 插件会调用此钩头 .

## 许可证

[公务员制度委员会](https://npmcn.com/package/%40dnlup/fastify-traps/LICENSE)

## 常见问题

### @dnlup/fastify-traps 是什么？

在SIGINT和SIGTERM信号上优雅地关闭服务器的快取插件

### 如何安装 @dnlup/fastify-traps？

在项目目录运行 npm install @dnlup/fastify-traps，或使用 pnpm add / yarn add / bun add。

### @dnlup/fastify-traps 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @dnlup/fastify-traps 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @dnlup/fastify-traps 可以商用吗？

@dnlup/fastify-traps 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @dnlup/fastify-traps 的下载量有多少？

根据 npm 官方下载统计，@dnlup/fastify-traps 在 2026/10/13 – 2026/11/11 这 30 天内被下载 26,076 次，日均约 869 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @dnlup/fastify-traps 还在维护吗？

最新版本 3\.1\.0 发布于 2024/11/29（2 年前）；至今共发布 11 个版本，其中过去 12 个月发布了 0 个；首次发布于 2020/11/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

