uni-app ethers插件报错
uni-app ethers插件报错
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 7 64位 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.1.22
手机系统:Android
手机系统版本号:Android 10
手机厂商:小米
手机机型:小米 8 小米10 华为p40
页面类型:vue
打包方式:云端
示例代码:
```source-code
源码
let crypto = anyGlobal.crypto || anyGlobal.msCrypto;
console.log(crypto);
if (!crypto || !crypto.getRandomValues) {
logger$m.warn("WARNING: Missing strong random number source"); //报错信息
crypto = {
getRandomValues: function (buffer) {
return logger$m.throwError("no secure random source avaialble", Logger.errors.UNSUPPORTED_OPERATION, {
operation: "crypto.getRandomValues"
});
}
};
}
操作步骤:
- 使用ethers报错Missing strong random number source
预期结果:
- 正常使用ethers
实际结果:
- 正常使用ethers
bug描述:
- 使用ethers插件后报错Missing strong random number source
更多关于uni-app ethers插件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
这个错误是因为uni-app环境中缺少浏览器标准的crypto.getRandomValues方法。ethers.js依赖这个加密API生成随机数,而在App端使用的是JavaScriptCore引擎,没有完整的Web Crypto API支持。
解决方案:
- 引入polyfill:在项目入口文件(如main.js)中添加:
import 'react-native-get-random-values';
- 配置打包:在manifest.json中配置模块引入:
"app-plus": {
"modules": {
"Crypto": {}
}
}
- 使用替代方案:如果仍不生效,可改用ethers的Shim版本:
import {ethers} from 'ethers/dist/ethers.min.js';

