# 迁移指南 > 这是一个关于从 Nitro 2 迁移到 3 的活文档。在使用测试版时请定期检查。 Nitro v3 引入了故意的不向后兼容的更改。本指南帮助您从 Nitro v2 迁移。 ## `nitropack` 重命名为 `nitro` NPM 包 [nitropack](https://www.npmjs.com/package/nitropack)(v2)已更名为 [nitro](https://www.npmjs.com/package/nitro)(v3)。 **迁移:** 在 `package.json` 中更新 `nitropack` 依赖为 `nitro`: 目前只提供夜间版本。 ```diff [nightly channel] { "dependencies": { -- "nitropack": "latest" ++ "nitro": "npm:nitro-nightly" } } ``` **迁移:** 在您的代码库中搜索并将所有 `nitropack` 实例重命名为 `nitro`: ```diff -- import { defineNitroConfig } from "nitropack/config" ++ import { defineNitroConfig } from "nitro/config" ``` ## nitro/runtime 运行时工具已被移至各自的 `nitro/*` 子路径导出。请参考文档以了解用法。 ```diff -- import { useStorage } from "nitropack/runtime/storage" ++ import { useStorage } from "nitro/storage" ``` ## 最低支持的 Node.js 版本:20 Nitro 现在要求最低 Node.js 版本为 20,因为 Node.js 18 将在 [2025 年 4 月](https://node.zhcndoc.com/zh-cn/about/previous-releases) 达到生命周期结束。 请升级到 [最新的 LTS](https://node.zhcndoc.com/zh-cn/download) 版本(>= 20)。 **迁移:** - 使用 `node --version` 检查您的本地 Node.js 版本,如有必要请更新。 - 如果您使用 CI/CD 系统进行部署,请确保您的管道正在运行 Node.js 20 或更高版本。 - 如果您的托管提供商管理 Node.js 运行时,请确保它设置为版本 20、22 或更高。 ## 类型导入 Nitro 类型现在仅从 `nitro/types` 导出。 **迁移:** 从 `nitro/types` 导入类型,而不是从 `nitro`: ```diff -- import { NitroRuntimeConfig } from "nitropack" ++ import { NitroRuntimeConfig } from "nitro/types" ``` ## 应用配置支持已移除 Nitro v2 支持一个捆绑的应用配置,可以在 `app.config.ts` 中定义配置,并通过 `useAppConfig()` 在运行时访问它们。 此功能已被移除。 **迁移:** 在您的服务器目录中使用常规的 `.ts` 文件并直接导入。 ## 预设更新 Nitro 预设已更新以确保与最新版本兼容。 一些(遗留)预设已被移除或重命名。
旧预设 新预设
node node-middleware (导出更改为 middleware
cloudflare , cloudflare_worker , cloudflare_module_legacy cloudflare_module
deno-server-legacy deno_server ,使用 Deno v2
netlify-builder netlify_functions netlify_edge
vercel-edge vercel ,启用 Fluid 计算
azure , azure_functions azure_swa
firebase firebase-functions
iis iis-handler
deno deno-deploy
edgio 已停产
cli 因使用不足而移除
service_worker 因不稳定性而移除
firebase 使用新的 Firebase 应用托管
## 移除的子路径导出 Nitro v2 引入了多个子路径导出,其中一些已被移除或更新: - `nitro/rollup`、`nitropack/core`(请使用 `nitro/builder`) - `nitropack/runtime/*`(请使用 `nitro/*`) - `nitropack/kit`(已移除) - `nitropack/presets`(已移除) 曾经引入了一个实验性的 `nitropack/kit`,但现在已经被移除。未来可能会推出一个独立的 Nitro Kit 包,并且目标会更加明确。 **Migration:** - 使用来自 `nitro/types` 的 `NitroModule`,而不是来自 kit 的 `defineNitroModule`。 - 优先使用内置的 Nitro 预设(外部预设仅供评估使用)。 ## 可选钩子 如果您之前在 Nitro 插件外部使用过 `useNitroApp().hooks`,它可能为 undefined。请使用新的 `useNitroHooks()` 来保证获得实例。