迁移指南

这是一份从 Nitro 2 迁移到 3 的实时文档。在使用 beta 版本时请定期查看。

Nitro v3 引入了故意的向后不兼容更改。本指南帮助你从 Nitro v2 迁移。

nitropack 重命名为 nitro

NPM 包 nitropack (v2) 已重命名为 nitro (v3)。

迁移:package.json 中将 nitropack 依赖更新为 nitro

{
  "dependencies": {
--    "nitropack": "latest"
++    "nitro": "latest"
  }
}

迁移: 搜索你的代码库并将所有 nitropack 实例重命名为 nitro:

-- import { defineNitroConfig } from "nitropack/config"
++ import { defineNitroConfig } from "nitro/config"

nitro/runtime/*

以前,你可以从 nitro/runtimenitro/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
nodenode-middleware (export 更改为 middleware)
cloudflare, cloudflare_worker, cloudflare_module_legacycloudflare_module
deno-server-legacydeno_server 与 Deno v2
netlify-buildernetlify_functionsnetlify_edge
vercel-edgevercel 启用 Fluid compute
azure, azure_functionsazure_swa
firebasefirebase-functions
iisiis-handler
denodeno-deploy
edgio已停止
cli因缺乏使用而移除
service_worker因不稳定而移除
firebase使用新的 firebase app hosting

移除子路径导出

Nitro v2 引入了多个子路径导出,其中一些已被移除:

  • nitropack/core (使用 nitro)
  • nitropack/runtime/*
  • nitropack/dist/runtime/*
  • nitropack/presets/*
  • nitro/rollup
  • nitropack/kit

引入了一个实验性的 nitropack/kit,但现在已被移除。将来可能会引入一个独立的 Nitro Kit 包,具有更清晰的目标。

迁移:

  • 使用来自 nitro/typesNitroModule,而不是来自 kit 的 defineNitroModule
  • 优先使用内置的 Nitro preset(外部 preset 仅用于评估目的)。