Guide
迁移指南
这是一个关于从 Nitro 2 迁移到 3 的活文档。在使用测试版时请定期检查。
Nitro v3 引入了故意的不向后兼容的更改。本指南帮助您从 Nitro v2 迁移。
nitropack
重命名为 nitro
NPM 包 nitropack(v2)已更名为 nitro(v3)。
迁移: 在 package.json
中更新 nitropack
依赖为 nitro
:
目前只提供夜间版本。
{
"dependencies": {
-- "nitropack": "latest"
++ "nitro": "npm:nitro-nightly@latest"
}
}
迁移: 在您的代码库中搜索并将所有 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 运行时,请确保它设置为版本 20、22 或更高。
类型导入
Nitro 类型现在仅从 nitro/types
导出。
迁移: 从 nitro/types
导入类型,而不是从 nitro
:
-- 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 | layer0 |
cli | 因使用不足而移除 |
service_worker | 因不稳定性而移除 |
firebase | 使用新的 Firebase 应用托管 |
移除的子路径导出
Nitro v2 引入了多个子路径导出,其中一些已被移除:
nitropack/core
(使用nitro
)nitropack/runtime/*
nitropack/dist/runtime/*
nitropack/presets/*
nitro/rollup
nitropack/kit
一个实验性的 nitropack/kit
曾经被引入,但现在已被移除。未来可能会推出一个独立的 Nitro Kit 包,具有更清晰的目标。
迁移:
- 使用来自
nitro/types
的NitroModule
,而不是来自 kit 的defineNitroModule
。 - 优先使用内置的 Nitro 预设(外部预设仅供评估使用)。