React项目使用envalid 7.1.1触发运行时错误:Env var not found: $$typeof
问题原因
envalid v7+ 版本调用cleanEnv后默认返回代理(Proxy)对象,且默认开启strictProxy配置,只要访问未在规则中定义的属性就会直接抛出ReferenceError。
React运行时会自动扫描所有导出对象,尝试读取$$typeof属性判断是否为React内部元素,该属性没有在你的envalid校验规则中声明,访问时就触发了报错。
解决方案
- 方案1(快速修复):关闭严格代理配置
给cleanEnv传入第三个参数关闭strictProxy,访问未定义属性时将返回undefined而非抛错:
import { cleanEnv, str } from 'envalid'; const ENV = cleanEnv(process.env, { NODE_ENV: str({ default: 'development' }), REACT_APP_SOME_VALUE: str({ default: 'default value' }), }, { strictProxy: false }); export default ENV;
- 方案2(更推荐):转为普通对象导出
将envalid返回的代理对象展开为普通JS对象,既保留原有环境变量校验能力,又不会触发代理的属性访问拦截逻辑:
import { cleanEnv, str } from 'envalid'; const envProxy = cleanEnv(process.env, { NODE_ENV: str({ default: 'development' }), REACT_APP_SOME_VALUE: str({ default: 'default value' }), }); const ENV = { ...envProxy } export default ENV;
内容的提问来源于stack exchange,提问作者Mario Petrovic
相关产品推荐
相关产品推荐

