RSS DEV 社区
关注
没人告诉你的10件事 process.env
环境变量可能较为复杂,理解其细微差别对于避免常见的开发陷阱至关重要。在 Linux 上,环境变量键名是区分大小写的,而在 Windows 上则不区分大小写,这可能导致“在我机器上能运行”的问题。从 process.env 获取的所有值均为字符串,必须显式解析数字和布尔值,以避免意外行为和潜在的 NaN。process.env 对象与 .env 文件是分离的;Node.js 在未进行特定配置的情况下不会自动读取 .env 文件。环境变量可以按命令设置,将其作用域限制在单个进程内,从而避免污染 shell。强烈不建议在运行时修改 process.env,因为这会严重阻碍调试并引入不确定性。Next.js 会在构建时内联 NEXT_PUBLIC_ 开头的变量,这意味着在生产服务器上修改这些变量需要重新构建才能生效。process.env 在浏览器中不可直接访问;构建工具(如 Webpack 和 Vite)会对其进行模拟,通常使用特定前缀来暴露变量。NODE_ENV 变量默认不由 Node.js 设置,必须由框架处理或显式设置。请注意,在某些系统上,环境变量值可能存在大小限制,可能导致大数据被截断。最后,环境变量会被子进程继承,这意味着秘密信息可能被暴露给不需要它们的进程。