Let'sMoveSui环形掌上战争0基础开发入门到精通(7)第七章继续迭代中碰到的问题和解决方案2024新版和旧版交替问题suimove的新版已经在测试版/主网发布。还在用老版本的同学们会碰到一些问题。甚至有些朋友还在用1.16版本,非常古老了。建议大家都做一做升级。升级步
<!--StartFragment-->
sui move的新版已经在测试版/主网发布。还在用老版本的同学们会碰到一些问题。
甚至有些朋友还在用1.16版本,非常古老了。建议大家都做一做升级。
升级步骤不再冗述,请参考官方文档。
本文列举一些大家常见碰到的问题:
这个问题就是因为教程上用了public 关键字,而本地版本还没升到1.22所致
在toml里加入了控制开关
edition = "2024.beta"
编译顺利通过。然后在主网上试着发布一下,发现如下现象。
实际public打包成字节码发布上去后就没有了,说明编译环境自动会根据情况编译成不同的版本。
v1.22开始,增加了migrate操作,之前是没有这个命令的。
同学们可以从主网下载1.22版本进行测试,或者自己编译一个1.22版本。
windows环境下的同学们目前非常多的碰到问题:
目前解决的方案是需要在toml文件里做如下改动
[dependencies]
Sui = { git = "...", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" }
改成
[dependencies]
Sui = { git = "...", subdir = "crates/sui-framework/packages/sui-framework", rev = "testnet" }
其实就是将 **framework/**去掉,估计是windows环境下的路径有问题。
或者是将源码下载下来,使用本地路径
Sui = { local = "../../../sui/crates//sui-framework/packages/sui-framework"}
以上两个方案都可以解决这个问题。
在windows状态下编译可能会碰到 os error 3的问题(这个也比较常见)
这个错误可能是windows的权限问题。
一时半会儿没有找到解决方法,官网上我已问过。据说是 1.23版本修复了这个问题。
目前暂时使用 powershell 来暂时解决这个问题。
还有个新人很容易碰到的问题
19 │ public entry fun mint(amount:u64 , ctx:&mut TxContext,test:u64){
│ ----- ^^^ -------------- 'entry' parameters must be primitives (by-value), vectors of primitives, objects (by-reference or by-value), vectors of objects, or 'Receiving' arguments (by-reference or by-value)
│ │ │
│ │ Invalid 'entry' parameter type for parameter 'ctx'
│ 'mint' was declared 'entry' here
其实是ctx的位置问题,必须是最后一个参数。
但报错信息并没有很好的解释。
所以很容易误导我们。
改成这样就没问题了
public entry fun mint(amount:u64,test:u64 , ctx:&mut TxContext)
其他还有很多问题,大家可以参考官方github上的示例。
直接到sample里去找,那边的代码基本都是编译通过的。
也欢迎留言给我,大家一起探讨。
(未完待续)
Let's Move 中文社区
telegram: https\://t.me/move_cn
QQ群: 79489587
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!