18:23:13.634 reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught Error: unable to locate global object
at getGlobal (app-service.js:18701:11)
at (app-service.js:18703:21)
at (app-service.js:36748:3)
报错原因【基于app端测试一下这些库就知道了】:
// 基于Uniapp在app端运行报错【Uncaught Error: unable to locate global object】
// 错误原因是:Uniapp在app端运行时,没有提供global对象,导致ethers.js和tronweb.js无法正常运行
// 注:还有更多的库可能会出现类似的问题【使用时需要自行测试...】
import { Wallet } from "ethers"
import tronweb from "tronweb"
console.log(Wallet)
console.log(tronweb)
解决方案配置vite.config.ts【解决跨端中global全局对象指向的问题】:
import { defineConfig } from "vite"
import uni from "@dcloudio/vite-plugin-uni"
// https://vitejs.dev/config/
export default defineConfig({
plugins: [uni()],
define: {
/**
* 功能:定义或覆盖全局对象
* 特殊说明:
* 1、兼容多平台的全局对象【统一标准化全局对象为globalThis】
* H5端【global全局对象默认=window】但是兼容globalThis
* Node端【global全局对象默认=global】但是兼容globalThis
* WebWorker端【global全局对象默认=self】但是兼容globalThis
* App端、小程序端等非标准环境【没有全局对象】但是兼容globalThis
*/
global: "globalThis" // 兼容跨端的全局对象global为globalThis
}
})