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/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 运行时,请确保它设置为版本 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 预设已更新以确保与最新版本兼容。

一些(遗留)预设已被移除或重命名。

旧预设新预设
nodenode-middleware(导出更改为 middleware
cloudflare, cloudflare_worker, cloudflare_module_legacycloudflare_module
deno-server-legacydeno_server,使用 Deno v2
netlify-buildernetlify_functionsnetlify_edge
vercel-edgevercel,启用 Fluid 计算
azure, azure_functionsazure_swa
firebasefirebase-functions
iisiis-handler
denodeno-deploy
edgiolayer0
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/typesNitroModule,而不是来自 kit 的 defineNitroModule
  • 优先使用内置的 Nitro 预设(外部预设仅供评估使用)。