# Node.js 包兼容性

URL: https://caijiao.org/bun/compat/node
Source: docs/bun/compat/node.md
Description: 本章节介绍了 Bun 在兼容 Node.js 包方面的表现，包括如何处理 Node.js 模块，并确保与现有的生态系统兼容。

[Bun](/bun/) 是一个现代的 [JavaScript](/javascript/) 运行时，其设计目标之一是兼容大部分 Node.js 包。由于 Bun 的目标是高性能，它采用了一些独特的方式来支持 Node.js 的模块系统，确保开发者能够无缝地使用现有的 Node.js 包。

## 1. Bun 与 Node.js 模块的兼容性

Bun 在大多数情况下能够兼容常见的 Node.js 模块，特别是那些使用 CommonJS 或 ES 模块格式的包。对于现有的 JavaScript 和 TypeScript 库，Bun 能够通过其原生的模块解析和运行时优化，使得许多包可以直接在 Bun 环境下运行。

### 例子

```javascript
import fs from 'fs'; // Node.js 内置模块
import express from 'express'; // Node.js 包
````

Bun 可以直接运行这些代码，支持绝大多数 Node.js 库和工具。

## 2. 异常与限制

尽管 Bun 在大多数情况下兼容 Node.js 包，但仍存在一些限制。例如，某些依赖于 Node.js 原生 API（如 `worker_threads` 或 `net` 模块）或复杂的二进制扩展的包，可能需要额外的适配或修改。

## 3. 使用 Bun 与现有 Node.js 包

开发者可以直接使用 Bun 来运行现有的 Node.js 包，而无需进行额外的修改。如果某些模块存在兼容性问题，可以查看 Bun 的文档或社区资源，了解如何进行调整。

### 示例

在 Bun 中使用 Express：

```javascript
import express from 'express';

const app = express();

app.get('/', (req, res) => {
  res.send('Hello from Bun!');
});

app.listen(3000, () => console.log('Server running on http://localhost:3000'));
```

通过这种方式，开发者可以利用 Bun 的高性能来运行传统的 Node.js 应用。

## 4. 总结

Bun 作为一个高性能的 [JavaScript](/javascript/) 运行时，能够很好地兼容大多数 Node.js 包。虽然存在某些限制，但对于大多数常见的模块和工具，Bun 提供了良好的支持，使得开发者能够快速迁移或同时使用 Node.js 和 Bun。
