I use nacl in react native
i just write down code below.
it returns no PRNG error in randombytes variable.
const test = nacl.box.keyPair();
here is my package.json too.
{
"dependencies": {
"@react-navigation/material-bottom-tabs": "^6.2.15",
"@react-navigation/native": "^6.1.6",
"@react-navigation/native-stack": "^6.9.12",
"bs58": "^5.0.0",
"react": "18.2.0",
"react-native": "0.71.3",
"react-native-get-random-values": "^1.8.0",
"react-native-paper": "^5.4.1",
"react-native-safe-area-context": "^4.5.0",
"react-native-screens": "^3.20.0",
"react-native-webview": "^11.26.1",
"tweetnacl": "^1.0.3"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@react-native-community/eslint-config": "^3.2.0",
"@tsconfig/react-native": "^2.0.2",
"@types/jest": "^29.2.1",
"@types/react": "^18.0.24",
"@types/react-test-renderer": "^18.0.0",
"metro-react-native-babel-preset": "0.73.7",
"react-test-renderer": "18.2.0",
"typescript": "4.8.4"
}
}

I've faced the same problem before. During research I discovered that
naclusesnacl.randomBytes()internally. However, the actual implementation differs depending on a platform you use it. Fornodeit invokescrypto.randomBytes(), which is not defined in ReactNative environment.To get work
naclwith ReactNative you need to provide the definition by yourself. You can do it by installing thereact-native-get-random-valuespackage and addingto the
index.jsThis will provide
naclwith the definition for thecrypto.randomBytes().