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 ethers插件报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个错误是因为uni-app环境中缺少浏览器标准的crypto.getRandomValues方法。ethers.js依赖这个加密API生成随机数,而在App端使用的是JavaScriptCore引擎,没有完整的Web Crypto API支持。

解决方案:

  1. 引入polyfill:在项目入口文件(如main.js)中添加:
import 'react-native-get-random-values';
  1. 配置打包:在manifest.json中配置模块引入:
"app-plus": {
  "modules": {
    "Crypto": {}
  }
}
  1. 使用替代方案:如果仍不生效,可改用ethers的Shim版本:
import {ethers} from 'ethers/dist/ethers.min.js';
回到顶部