NextJS中仅用于API路由的NEXT_PUBLIC_变量是否会进入前端包?
关于Next.js NEXT_PUBLIC_前缀环境变量的疑问解答
- 结论很明确:只要变量名带有
NEXT_PUBLIC_前缀,不管你是否在前端代码里实际使用它,它都会被打包进前端资源包中,同时变量值会在构建阶段被替换。 - 原因是Next.js对这类前缀变量的处理逻辑完全基于命名规则:只要检测到变量以
NEXT_PUBLIC_开头,就会自动将其注入到客户端全局环境(比如process.env),并打包进前端静态文件里,和你实际在哪段代码里调用它无关。 - 要是这个变量属于敏感信息(比如密钥、令牌),哪怕只在API路由这类后端逻辑里使用,也绝对不能加
NEXT_PUBLIC_前缀——否则会直接暴露给所有访问网站的用户,带来严重安全风险。正确的做法是使用不带该前缀的变量,仅在后端代码(API路由、getServerSideProps等服务端执行逻辑)中读取,这样既不会被打包到前端,生产环境也能正常获取变量值。
内容的提问来源于stack exchange,提问作者seven
相关产品推荐
相关产品推荐

