Next.js 是一个用于服务器渲染的通用 JavaScript Web 应用程序的小型框架,该框架基于React、Webpack 和 Babel 构建,为该网站提供了强大的支持。
此升级完全向后兼容,建议所有版本低于 12.0.5 的用户使用。补丁到 Next.js 11 的后向移植版本为 11.1.3。
当提供next-server无法解析的 URL 时,unhandledPromiseRejection可能会发生。在 Node.js 版本 <v15.0.0这不是一个致命的问题,因为只显示一个警告。但是,在 Node.js 版本 > 中v15.0.0,这会导致服务器进程退出,从而导致服务器意外崩溃。
next-server
unhandledPromiseRejection
v15.0.0
我们已经为 Next.js 的稳定和金丝雀渠道发布了补丁版本。
升级运行 npm install next@latest --save
npm install next@latest --save
受影响:以下所有条件都为真才会受到影响
v11.1.0
v12.0.5
next start
不受影响:Vercel ( vercel.com )上的部署以及在到达 Next.js 之前过滤无效请求的类似环境不受影响。
无论您是否可以重现该问题,我们都建议大家升级。
如果您正在运行 Node.js >v15.0.0和 Next.js,您可以过滤任何服务器错误日志ERR_INVALID_URL。
ERR_INVALID_URL
随着 Next.js 越来越受到企业的欢迎和使用,它受到了安全研究人员和审计人员的关注。我们感谢 GitHub 用户hopeless-programmer-online对原始错误的调查和发现。
hopeless-programmer-online
我们已经发布了一个补丁,可确保正确处理此unhandledPromiseRejection问题,从而不再出现此问题。
此攻击的回归测试已添加到安全集成测试套件中
请求公开 CVE。
我们鼓励负责任地披露未来的报告。请给我们发电子邮件security@vercel.com。我们正在积极监控这个邮箱。
security@vercel.com
添加 swc 转换以移除console.*呼叫。:#31449
console.*
支持 ESLint v8:#29865
修复:允许next lint不eslint-config-next安装:#29823
next lint
eslint-config-next
删除 TextEncoder 和 TextDecoder 包装器:#31490
简化输出消息:#31454
更新 webpack:#31455
NextResponse: 添加.json静态方法:#31483
.json
在流中使用 _error 进行开发:#31466
重构中间件 SSR 加载器:#31508
为Google-PageRenderer机器人添加检测:#31521
Google-PageRenderer
开发覆盖的点击打开错误状态#14461 : #21819
确保只呈现一种文档类型:#31534
更新 swc:#31540
添加/wasm 构建:#31470
遥测:跟踪 'optimizeFonts' 的使用:#31522
使缺失的Document组件成为错误:#31505
Document
调整 AVIF 大小使其小于 WebP 大小:#31494
修复开发中路由更改的未处理拒绝:#31554
重新添加本机包文件夹并确保下载 wasm 工件:#31561
修复中间件的 HMR #30791:#31548
小幅简化为renderToWebStream:#31553
renderToWebStream
在准备好 HMR ping 之前修复访问路由器:#31588
实现 next-page-disallow-re-export-all-exports 的 SWC 端口:#31582
[ESLint] 防止no-html-link-for-pages对静态文件发出警告:#31495
no-html-link-for-pages
将根 div 移动到应用程序包装器:#31596
添加 geo lat 和 long 类型:#31624
修复非并发函数_document:#31628
删除关于不推荐使用的字符串子项的过时评论next/link:#30606
next/link
修复(中间件):考虑本地主机的变化:#31603
更新 swc:#31639
将 next-swc Rust 代码提取到自己的包中:#31635
在路由器初始化之前修复开发路由器的使用:#31632
避免改变 response.cookie 选项:#31679
为 RSC 中使用的请求添加 cookie 和标头:#31623
删除 trace_target env var 以支持 .next/trace:#31697
发生水化错误时添加错误链接:#31519
修复初始编译时间错误测量:#31733
延迟初始化 getStaticPathsWorker:#31760
删除 noop 导入:#31722
更新 webpack:#31759
修复 wasm 加载:#31772
删除一些观察者黑客并更新版本:#31768
改进和重构某些类型:#31704
当没有加载器跟随 next-swc-loader 时,在 swc 中读取文件:#31682
延迟加载 postcss:#31762
更新 webpack:#31798
确保保留中间件顺序:#31801
重构沙箱模块缓存:#31822
修复水化中间件效果:#31800
修复:支持 no-page-custom-font 中 _document 中的函数组件:#31560
添加对移除 React 属性的支持。:#31606
在导出的类型定义中包含子模块:#28316
将 require.resolve 移入模块范围:#31799
修复放大器验证器消息格式:#31018
修复边缘 SSR 中的自动导出条件:#31845
错误修复:输入 href 时未定义 href 值:#31813
如果找到本地,则不加载外部绑定:#31853
修复:rsc 标头:#31854
向 Next Server 添加端口和主机名选项:#31858
修复:无法分配给只读属性 'children':#31784
如果有自定义加载器,则修复禁用内置 CSS 支持:#31078
在插件索引中包含 no-document-import-in-page 规则:#31890
napi-rs 不支持的平台/架构帐户:#31938
在 prod 中删除 prop 可写检查:#31929
启用 concurrentFeatures 时启用默认功能文档:#31954
停止使用环境变量pages/_document:#31946
pages/_document
使用 react 18 beta 修复图像相关链接道具警告:#31895
转换为正则表达式时的转义字符串:#31791
为 NextMiddleware 添加 TS 类型:#30578
修复(类型):为 NextRequest 添加缺少的 ua 类型:#31901
确保外部模块没有捆绑到 RSC 的客户端中:#31968
解析航班请求的流数据:#32010
允许预发布 React 18 作为对等:#31991
fix(Link): 不要忽略 onMouseEnter 属性与绝对 href: #32012
添加experimental.swcFileReading 标志以禁用swc 中的文件读取:#31995
使用 skipLibCheck 修复中间件类型:false:#32025
包含导出错误页面以便于调试:#32013
避免将 webpack 配置保留太久:#32053
跳过图像未呈现到 dom 的警告:#32049
改进导出的根定义:#32077
使用 Polyfill fetch 修复正在运行的服务器:#31935
确保无效的 URL 正确响应 400:#32092
删除future.strictPostcssConfiguration配置:#32098
恢复“使用 Polyfill fetch 修复正在运行的服务器(#31935)”:#32100
更新react-18.md:#31476
为 Rust 编译器(SWC)添加文档。:#31467
脚本示例:#31181
修复 API 路由响应的类型声明:#31486
更新环境变量.md:#31525
向自定义页面扩展添加中间件示例:#31545
添加了使用 MDX 设置 Next.js 的指南:#30869
修复 MDX 指南中的错字:#31709
添加了关于 env vars 的注释:#31237
docs(next-config): 延长相线参考:#31711
[文档][修复]断开的API 链接参考:#31820
文档(路由器):为 url 参数添加类型:#31737
SWC:向 next-dynamic 添加错误检查和测试:#31683
文档(React 18):添加缺少的Suspense导入:#31897
Suspense
文档(React 18):删除不必要的React导入:#31900
React
改进:中间件设置 Cookie API 参考:#31707
更新next export文档。:#31465
next export
更新 Jest 示例和文档:#31633
向文档添加sharp有关默认 Linux 设置中内存使用情况的注释:#31919
sharp
文档(测试):删除重复链接:#32071
用 public 替换旧的静态路径 | 错别字:#31573
更新 cms-cosmic 示例的 README:#31701
cms-cosmic 示例中的“imgix.cosmicjs.com”图像域:#31703
修复 pwa 演示:#31734
文档(示例):向 with-iron-session 添加安全标志说明:#31896
[WIP] 添加跟踪到with-sentry示例:#30401
with-sentry
通过删除不推荐使用的函数来修复 with-mongo 示例:#30675
alert.js 中的语法错误:#32062
恢复“为 Rust 编译器(SWC)添加文档。”:#31484
确保在发布之前编写了 wasm package.json:#31568
更新 labeler.json
更新发送到 jaeger 的 URL 输出:#31563
修复有关测试的文档中的错字:#31653
为用 Rust 编写的 Next.js 编译器添加文档(利用 SWC):#31485
修复更漂亮的掉毛
修复发布部分的标签
修复 musl 构建
为 swc_bundler 启用 require:#31663
添加测试用例:#31691
更新swc:#31816
文档(中间件):文件扩展名一致性:#31879
删除无用的测试:#31898
删除不必要的工作流程步骤:#31943
更新 swc:#31963
文档(NextRequest):req.cookie => req.cookies:#31975
将 next-swc 添加到贴标机
将 Rich、Maedah 和 Ismael 添加到文档标签
更新标签生成配置中的 Maedahs 名称:#32005
修复为本地隔离测试复制 swc 二进制文件:#32026
CI 的锁定节点版本:#32057
使 CI 构建缓存键更具体:#32059
从 Next.js 存储库脚本中删除“yarn jest”:#32042
修复 testall npm 脚本:#32081
感谢@mzaien,@losfair,@ykzts,@leerob,@timneutkens,@stefanprobst,@javivelasco,@sokra,@goncy,@knezevicdev,@Kikobeats,@huozhi,@shuding,@styfle,@阳feng- yfeng,@ kdy1,@xuchaobei,@elkevinwolf,@padmaia,@kyliau,@devknoll,@fabienheureux,@hanneslund,@nilskaspersson,@Andarist,@mathcrln,@ijjk,@ dferber90,@molebox,@FranciscoMoretti,@benschwarz,@ wendellhu95,@gazdagergo,@imabp,@ljosberinn,@samuliasmala,@lfades,@ ka2jun8,@monsonjeremy,@pqt,@vvo,@leoortizz,@米歇尔-克雷默,@thibautsabot,@MaedahBatool,@lobsterkatie,@ntkoopman,@delbaoliveira,@iicdii,@ J-门德斯,@chentsulin,@ericmatthys,@lennym,@balogunkeji和@wnr的贡献!