迁移指南
这是一份从 Nitro 2 迁移到 3 的实时文档。在使用 beta 版本时请定期查看。
Nitro v3 引入了故意的向后不兼容更改。本指南帮助你从 Nitro v2 迁移。
nitropack 重命名为 nitro
NPM 包 nitropack (v2) 已重命名为 nitro (v3)。
迁移: 在 package.json 中将 nitropack 依赖更新为 nitro:
{
"dependencies": {
-- "nitropack": "latest"
++ "nitro": "latest"
}
}
{
"dependencies": {
-- "nitropack": "latest"
++ "nitro": "npm:nitro-nightly"
}
}
迁移: 搜索你的代码库并将所有 nitropack 实例重命名为 nitro:
-- import { defineNitroConfig } from "nitropack/config"
++ import { defineNitroConfig } from "nitro/config"
nitro/runtime/*
以前,你可以从 nitro/runtime 和 nitro/runtime/* 导入。
对嵌套路径的支持已被移除,以防止暴露 Nitro 内部。
迁移: 搜索 nitro/runtime/ 导入并用 nitro/runtime 替换它们:
-- import { useStorage } from "nitropack/runtime/storage"
++ import { useStorage } from "nitro/runtime"
最低支持的 Node.js 版本:20
Nitro 现在要求最低 Node.js 版本为 20,因为 Node.js 18 将在 2025 年 4 月 停止支持。
请升级到最新 LTS版本(>= 20)。
迁移:
- 使用
node --version检查你的本地 Node.js 版本,并在必要时更新。 - 如果你使用 CI/CD 系统进行部署,确保你的管道运行 Node.js 20 或更高版本。
- 如果你的托管提供商管理 Node.js runtime,确保设置为版本 20、22 或更高版本。
类型导入
Nitro 类型现在仅从 nitro/types 导出。
迁移: 从 nitro/types 导入类型,而不是从 nitro:
-- import { NitroRuntimeConfig } from "nitropack"
++ import { NitroRuntimeConfig } from "nitro/types"
移除应用配置支持
Nitro v2 支持捆绑的应用配置,允许在 app.config.ts 中定义配置并通过 useAppConfig() 在 runtime 访问它们。
此功能已被移除。
迁移:
在服务器目录中使用常规 .ts 文件并直接导入它。
Preset 更新
Nitro preset 已更新以实现最新兼容性。
一些(旧版)preset 已被移除或重命名。
| 旧 Preset | 新 Preset |
|---|---|
node | node-middleware (export 更改为 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 compute |
azure, azure_functions | azure_swa |
firebase | firebase-functions |
iis | iis-handler |
deno | deno-deploy |
edgio | 已停止 |
cli | 因缺乏使用而移除 |
service_worker | 因不稳定而移除 |
firebase | 使用新的 firebase app hosting |
移除子路径导出
Nitro v2 引入了多个子路径导出,其中一些已被移除:
nitropack/core(使用nitro)nitropack/runtime/*nitropack/dist/runtime/*nitropack/presets/*nitro/rollupnitropack/kit
引入了一个实验性的 nitropack/kit,但现在已被移除。将来可能会引入一个独立的 Nitro Kit 包,具有更清晰的目标。
迁移:
- 使用来自
nitro/types的NitroModule,而不是来自 kit 的defineNitroModule。 - 优先使用内置的 Nitro preset(外部 preset 仅用于评估目的)。