Next.js项目中.env文件环境变量未被正常处理该如何解决?
问题原因及解决方法
- 核心原因是Next.js的环境变量注入规则限制:只有以
NEXT_PUBLIC_为前缀的环境变量,才会被注入到客户端打包代码中,可在_app.js这类前端组件中直接读取;不带此前缀的变量仅能在Node.js执行的服务端代码(如API路由、getServerSideProps、getStaticProps)中访问。你.env文件中的MAILCHIMP_PUBLIC_*变量不符合前缀要求,所以在前端页面读取不到。 - 如果你需要在客户端使用这些MAILCHIMP相关变量,直接修改变量名前缀即可:
调整后的.env文件示例:
读取代码同步修改为NEXT_PUBLIC_MAILCHIMP_PUBLIC_USERNAME=xxxxx NEXT_PUBLIC_MAILCHIMP_PUBLIC_DOMAIN=xxxx NEXT_PUBLIC_MAILCHIMP_PUBLIC_POST=xxxxxxxxxxxxxxxxxxxx& NEXT_PUBLIC_MAILCHIMP_PUBLIC_ID=xxxxxxxxprocess.env.NEXT_PUBLIC_*对应格式,同时Vercel平台上配置的环境变量名也要同步改成带NEXT_PUBLIC_前缀的版本。 - 其他排查项:
- 确认Next.js版本不低于9.4,更早版本不支持原生.env文件加载,需要手动配置
dotenv依赖 - 修改.env文件后必须重启Next.js开发服务器,环境变量仅在服务启动时加载,热更新不会同步变更
- 确认Next.js版本不低于9.4,更早版本不支持原生.env文件加载,需要手动配置
内容的提问来源于stack exchange,提问作者someone
相关产品推荐
相关产品推荐

