使用Formik+Redux提交表单时出现找不到crypto变量的错误
解决ReferenceError: Can't find variable: crypto错误
这个错误是因为你使用的nanoid库默认依赖浏览器/Node.js的crypto全局API生成随机ID,但你的运行环境(比如React Native)未提供该全局对象,导致提交表单时触发报错。
以下是两种可行的解决方案:
方案一:使用非安全兼容版nanoid
如果生成的ID不需要极高安全性(仅用于客户端本地标识场景),可以直接使用nanoid的非安全版本,它不依赖crypto模块:
- 修改导入语句:
import { nanoid } from 'nanoid/non-secure';
- 原有提交逻辑无需改动,重新提交即可正常生成ID。
方案二:补充crypto环境支持
如果需要保留安全版本的nanoid,需手动为环境添加crypto实现(以React Native为例):
- 安装依赖包:
npm install react-native-get-random-values
- 在项目入口文件(如
App.js)最顶部导入该包:
import 'react-native-get-random-values';
- 之后正常使用原版
nanoid即可,无需修改提交逻辑。
修改完成后重新提交表单,crypto相关错误会消失,Redux store也能正常接收帖子数据。
内容的提问来源于stack exchange,提问作者Shakshyam Sapkota
相关产品推荐
相关产品推荐

