Next.js应用中edgeFunctionEntry.env为null致生产崩溃,求原因分析
edgeFunctionEntry.env为null导致Next.js生产环境崩溃的原因分析
直接崩溃原因
崩溃的核心是buildEnvironmentVariablesFrom函数中对injectedEnvironments调用了Object.keys(),而injectedEnvironments是null——JavaScript不允许对null调用Object.keys(),因此抛出TypeError直接导致应用崩溃。
可能的根因
- Edge函数未配置环境变量:定义Edge Function时,若未指定需要注入的环境变量,Next.js构建过程中会默认将
edgeFunctionEntry.env设为null,而非预期的空对象{}。 - Next.js版本BUG:部分旧版本的Next.js在处理Edge Runtime环境变量时存在逻辑漏洞,当无显式环境变量声明时,未给
edgeFunctionEntry.env设置默认空对象,直接保留为null。 - 自定义Runtime逻辑错误:如果有修改Edge Runtime的自定义代码(比如你提供的
createModuleContext逻辑),可能在生成或传递edgeFunctionEntry参数时,未正确初始化env属性,导致其为null。 - 生产环境构建变量注入失败:生产构建时,环境变量未被正确加载或解析,比如使用的环境变量管理工具在生产环境未正常工作,导致Next.js无法生成有效的
env对象,最终传入null。
内容的提问来源于stack exchange,提问作者Bavan
相关产品推荐
相关产品推荐

