# @forrestjs/service-fastify 中文文档

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

版本：5\.2\.2
npm 元数据更新时间：2024-03-18T10:36:54.991Z
中文译文更新时间：2026-11-15T09:26:54.799Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：35.6 kB，12 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：5 个
- 首次发布：2020-08-02T12:45:32.813Z
- 最新版本发布：2024-03-18T10:36:54.513Z
- 近 30 天下载量：7939（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：169（近 12 个月 0 个）

## 中文简介

ForrestJS服务,它有助于建立快取服务器.

## 安装

```sh
npm install @forrestjs/service-fastify
```

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

## README

# @forrestjs/ service-fastify (中文(简体) )

ForrestJS服务,帮助建立快活JS服务器.

戴莫:  
[https://codesandbox.io/s/ service-fastify-th8dq 页面存档备份,存于互联网档案馆](https://codesandbox.io/s/service-fastify-th8dq)

## 安装设置( S)

```bash
npm add @forrestjs/service-fastify
```

在您的 FastifyJS App 中设置 :

```js
// index.js
const forrestjs = require('@forrestjs/core');
const fastifyService = require('@forrestjs/service-fastify');

// Create an Home Page for the Web App
const homePage = () => ({
  target: '$FASTIFY_ROUTE',
  handler: [
    {
      method: 'GET',
      url: '/',
      handler: async () => `Hello World`,
    },
  ],
});

// Run the App:
forrestjs.run({
  settings: {
    fastify: {
      port: 8080,
    },
  },
  services: [fastifyService],
  features: [homePage],
});
```

* * *

## 配置环境( E)

### \===================================================================================================================================================

设置服务器会聆听请求的端口 .

它回到环境变量:

-   `process.env.REACT_APP_PORT`
-   `process.env.PORT`
-   `8080` (默认值)

### {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}请把..

让您通过任意配置到 [快捷实例](https://www.fastify.io/docs/latest/Guides/Getting-Started/#your-first-server)。 。 。 .

### \* 固定.tdd.scope

让你设置测试API的根.

默认 : `/test`

* * *

## A. 背景情况

ForrestJS App将装饰:

### qq 结扎

引用 App 启动时配置的快捷实例 。 它允许完全操控运行中的服务器.

```js
const fastify = getContext('fastify');
```

### 轴线

参考了Axios的静态实例.

```js
const axios = getContext('axios');
await axios.get('/');
```

* * *

## 测试支持

服务快速化船舶测试设施 目标是使端-端测试方便您.

这个想法是让测试侵犯与快速实例互动 使用 REST API , 专供使用 `process.env.NODE_ENV` 设定为:

-   发展
-   测试

您也必须通过环境变量

```bash
DANGEROUSLY_ENABLE_FASTIFY_TDD_ENDPOINT=yes
```

这些测试特定的API在以下条件下暴露: `/test/...` 通过设置可以更改的根 `fastify.tdd.root`。 。 。 .

### 健康检查

根路线 `/test` 担任体检员。 任何测试客户端都应该等待 `200` 从此结束点回复,然后尝试运行任何呼叫.

默认情况下,这种健康检查没有逻辑,但您可以通过执行两个扩展来进行互动:

-   `$FASTIFY_TDD_CHECK`
-   `$FASTIFY_TDD_ROOT`

### 测试 API

`get://test/reset`

运行 `$FASTIFY_TDD_RESET` 处理器以重置 App 状态 .

`get://test/config?key=foobar&value=123`

从 App 读取配置值

`post://test/config { key: 'foobar', value: 555 }`

将配置值写入 App

`post://test/axios/stubs`

`delete://test/axios/stubs`

* * *

## 扩展

> 所有被曝光的扩展 `service-fastify` 为: _同步_ 执行 _静态_。 。 。 .

### $FASTIFY 选项

它允许在程序上修改给 Fastify 实例的选项,在 **瀑布**。 。 。 .

```js
registerAction({
  target: '$FASTIFY_OPTIONS',
  handler: (defaultOptions) => ({
    ...defaultOptions,
    logger: true,
  }),
});
```

### $FASTIFY HACKS BEE

这钩火在任何其他步骤之前.  
报告直接提到 `fastify` 举个例子.

```js
registerAction({
  target: '$FASTIFY_HACKS_BEFORE',
  handler: ({ fastify }) => {
    // Do something with the Fastify's instance
    fastify.register();
  },
});
```

### \* $FASTIFY HACKS AFTER

这钩火再过任何一步.  
报告直接提到 `fastify` 举个例子.

```js
registerAction({
  target: '$FASTIFY_HACKS_AFTER',
  handler: ({ fastify }) => {
    // Do something with the Fastify's instance
    fastify.register();
  },
});
```

### \\ $FASTIFY 巴拉圭

请注册 Fastify 插件或装饰实例 .

```js
registerAction({
  hook: '$FASTIFY_PLUGIN',
  handler: ({ registerPlugin }) => {
    registerPlugin(/* fastify plugin */);
    registerPlugin(/* fastify plugin */);
  },
});
```

它也接受API来装饰快活实例:

```js
registerAction({
  hook: '$FASTIFY_PLUGIN',
  handler: ({ decorateRequest }) => {
    const user = { name: 'Marco' };
    decorateRequest('user', user);
  },
});
```

### $FASTIFY 卢特

让我们在您快速化实例中执行一级路径 :

```js
// With the API:
registerAction({
  target: '$FASTIFY_ROUTE',
  handler: ({ registerRoute }) =>
    registerRoute({
      method: 'GET',
      url: '/',
      handler: (req, res) => res.send('Hello World'),
    }),
});

// With direct values:
registerAction({
  target: '$FASTIFY_ROUTE',
  handler: () => ({
    method: 'GET',
    url: '/',
    handler: (req, res) => res.send('Hello World'),
  }),
});

// With multiple routes
registerAction({
  target: '$FASTIFY_ROUTE',
  handler: () => [
    {
      method: 'GET',
      url: '/p1',
      handler: (req, res) => res.send('Page1'),
    },
    {
      method: 'GET',
      url: '/p2',
      handler: (req, res) => res.send('Page2'),
    },
  ],
});
```

### \* $FASTIFY TDD RESET

让您从任何服务或特性中注入状态重置逻辑 .

测试将调用 `/test/reset` 以触发 App 状态重置.

```js
registerAction({
  target: '$FASTIFY_TDD_CHECK',
  handler: ({ registerTddReset }) => {
    registerTddCheck(async ({ getContext }) => {
      const pg = getContext('pg');
      return pg.query('DROP SCHEMA "public" CASCADE');
    });
  },
});
```

### $FASTIFY TDD CHECK (英语)

让你注射 [`preHandlers`](https://www.fastify.io/docs/latest/Reference/Hooks/#prehandler) 页:1 `/test` 路线.

用于等待数据库连接或其他先决条件 .

```js
registerAction({
  target: '$FASTIFY_TDD_CHECK',
  handler: ({ registerTddCheck }) => {
    // Middleware style
    registerTddCheck((request, reply, next) => {
      console.log('Healthcheck with callback');
      next();
    });

    // Async style
    registerTddCheck(async (request, reply) => {
      console.log('Asynchronous healthcheck');
    });
  },
});
```

### \* $FASTIFY TDD ROOT

让您执行返回体 `/test` 路线.

```js
registerAction({
  target: '$FASTIFY_TDD_ROOT',
  name: 'registerTddRoute',
  handler: () => (request, reply) => reply.send('ok'),
});
```

### \* $FASTIFY TDD ROOT

让你延伸 `/test` API 有自定义子路由.

它的作用完全一样 `$FASTIFY_ROUTE`,但您定义的所有路径都带有测试前缀.

## 常见问题

### @forrestjs/service-fastify 是什么？

ForrestJS服务,它有助于建立快取服务器\.

### 如何安装 @forrestjs/service-fastify？

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

### @forrestjs/service-fastify 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/forrestjs\_\_service-fastify 是否存在。

### @forrestjs/service-fastify 支持 ESM 还是 CommonJS？

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

### @forrestjs/service-fastify 可以商用吗？

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

### @forrestjs/service-fastify 的下载量有多少？

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

### @forrestjs/service-fastify 还在维护吗？

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

