uni-app:Uncaught TypeError: Cannot read property ‘createElement‘ of undefined移动端调试基座白屏报错问题

文章讲述了在使用uni-app进行云打包后出现手机端白屏的问题,指出可能的原因是JavaScript的createElement方法在移动端不适用。建议使用手机模拟器进行USB调试,并提供了解决方案,即通过条件编译#defineH5来隔离H5特有代码。同时提到了renderjs的使用和页面编译执行流程,强调正确理解和遵循语法规则是避免白屏的关键。
摘要由CSDN通过智能技术生成

云打包后也是白屏!!! 

 这里打包后在手机上安装启动后一样白屏而且还看不到报错!!手机模拟器基座调试运行后可以看到报错,所以这里建议用手机模拟器基座调试!!!

手机模拟器基座调试:

手机打开开发人员选项后打开USB调试:

开发人员选项这里因为每个手机的型号不同打开方式也不同查一下自己手机型号的开发者选项如何打开就行

只需要打开USB调试就可以了其他的默认不用管

用手机USB链接电脑运行手机模拟器App基座:

刷新运行:

运行后报错:

exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: Cannot read property 'createElement' of undefined

createElement这里在文件搜索里找到引用的外部js文件:

 因为createElement只能在H5里使用app里不行!!!

只能加if判断

// #ifdef H5
     *****js代码块*****
// #endif

大概长这样:

但是这样的话js就用不了了 本菜鸡也很难受 各位大神就再另外想办法吧

这里说的是在移动端运行时

这里注意看官方文档:


https://uniapp.dcloud.net.cn/matter.htmlicon-default.png?t=N7T8https://uniapp.dcloud.net.cn/matter.html

 大概就是长这样吧:


<template>

</template>

<script>
	export default {
		components: {

		},
		data() {
			return {
				
			}
		},
		onLoad() {
				
		},
		created() {

		},
		mounted() {

		},
		// 方法
		methods: {
				

		}
</script>

<script module="test" lang="renderjs">
	export default {
		mounted() {
			
		},
		methods: {
			
		}
	}
</script>

<style>
	@import"@/style/css/login/login.css";
</style>

也就是说页面上得有两个script一个是用renderjs标注一下

我的理解是带renderjs的script在移动端执行的这个过程应该是把代码编译成可以在手机上被认识的

大概页面的编译执行流程长这样:

 renderjs用法参考文章:

https://uniapp.dcloud.net.cn/tutorial/renderjs.htmlicon-default.png?t=N7T8https://uniapp.dcloud.net.cn/tutorial/renderjs.html

https://juejin.cn/post/7049185827582115870icon-default.png?t=N7T8https://juejin.cn/post/7049185827582115870

运行时白屏也不光是因为rendersjs的问题,语法规则错误也会导致报错白屏这里要细心别到时候花半天时间改完代码之后还是白屏出不来结果发现压根就不是这里的问题那就难受了

好的,以下是一份基于NTRU数字签名的简单Java代码,无需使用相关库: ``` import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Random; public class NTRU { private static final int MESSAGE_LENGTH = 64; // 消息长度 private static final int N = 503; // NTRU公共参数,不用更改 private static final int P = 3; // NTRU公共参数,不用更改 private static final int Q = 101; // NTRU公共参数,不用更改 private static final int D = 97; // NTRU公共参数,不用更改 private static final int DR = 90; // NTRU公共参数,不用更改 private BigInteger s; // 加密密钥 private BigInteger h; // 验证公钥 private BigInteger f; // 签名私钥 // 生成加密密钥、验证公钥和签名私钥 public void generateKeyPair() { BigInteger t = generateT(); BigInteger b = generateB(t); BigInteger a = createA(t, b); BigInteger c = createC(a, b); s = createS(c); h = createH(a, b); f = createF(t, c); } // 对消息进行签名 public BigInteger sign(byte[] message) { BigInteger m = new BigInteger(1, message); BigInteger e = createE(m); BigInteger u = createU(e); return u; } // 验证签名是否合法 public boolean verify(byte[] message, BigInteger u) { BigInteger m = new BigInteger(1, message); BigInteger v = createV(h, u); BigInteger e = createE(m); BigInteger t = createT(v, e); return t.equals(u.modPow(f, BigInteger.valueOf(Q))); } // 生成NTT变换参数t private BigInteger generateT() { Random random = new Random(); BigInteger t = BigInteger.valueOf(random.nextInt((int) Math.pow(2, DR - 1))); return t.setBit(DR - 1).setBit(0).setBit(N); } // 生成多项式b private BigInteger generateB(BigInteger t) { BigInteger b; do { b = new BigInteger(N, new Random()); b = b.setBit(N - 1).setBit(P - 1).setBit(0); } while (t.gcd(b).intValue() != 1); return b; } // 生成多项式a private BigInteger createA(BigInteger t, BigInteger b) { BigInteger a = t.divide(b); return a; } // 生成多项式c private BigInteger createC(BigInteger a, BigInteger b) { Random random = new Random(); BigInteger c = new BigInteger(N, random); c = c.setBit(N - 1).setBit(P).setBit(0); return c.subtract(a.multiply(b)); } // 生成加密密钥s private BigInteger createS(BigInteger c) { return c.modPow(BigInteger.valueOf(D), BigInteger.valueOf(Q)); } // 生成验证公钥h private BigInteger createH(BigInteger a, BigInteger b) { return b.modInverse(BigInteger.valueOf(Q)).multiply(a).mod(BigInteger.valueOf(Q)); } // 生成签名私钥f private BigInteger createF(BigInteger t, BigInteger c) { return t.multiply(c.modInverse(BigInteger.valueOf(Q))).mod(BigInteger.valueOf(Q-1)); } // 计算多项式e private BigInteger createE(BigInteger m) { byte[] hashedMessage = sha256(m.toByteArray()); BigInteger e = new BigInteger(1, hashedMessage).modPow(BigInteger.valueOf(2), BigInteger.valueOf(Q)); return e; } // 计算多项式u private BigInteger createU(BigInteger e) { BigInteger u = e.multiply(s).mod(BigInteger.valueOf(Q)); return u; } // 计算多项式v private BigInteger createV(BigInteger h, BigInteger u) { BigInteger v = u.mod(h).modPow(BigInteger.valueOf(D), BigInteger.valueOf(Q)); return v; } // 计算t private BigInteger createT(BigInteger v, BigInteger e) { BigInteger t = v.modPow(e, BigInteger.valueOf(Q)); return t; } // SHA-256散列函数 private static byte[] sha256(byte[] message) { try { MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); sha256.update(message); return sha256.digest(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } public static void main(String[] args) { NTRU ntru = new NTRU(); ntru.generateKeyPair(); byte[] message = "Hello, world!".getBytes(); BigInteger signature = ntru.sign(message); boolean valid = ntru.verify(message, signature); System.out.println("Valid signature: " + valid); } } ``` 请注意:这仅仅是一个非常简单的示例,实际运用中需要更复杂的实现。此外,对于严格安全性的要求,建议使用专业的库函数实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和风微凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值