🙆♀️
Aptosチュートリアルでコンパイルエラーになったときの原因と解決方法
AptosのBuild an E2E Dapp on Aptosチュートリアルを進めていたところ、何度試してもコンパイルできませんでした。
Aptos LabsのGithub Isuueで質問したところ解決したので、シェアします。
こちらのチュートリアルです。
目次
- エラーの内容と開発環境について
- エラーの原因
- エラーの解決方法とコンパイル結果
- まとめ
エラーの内容と開発環境について
チュートリアルの「1. Create a Smart Contract」で、todolist.move
ファイルをコンパイルできませんでした。
エラーメッセージ
コンパイル時のエラーメッセージです。
error: property `map_borrow_mut_with_default` is not valid in this context
┌─ ../.move/https___github_com_aptos-labs_aptos-core_git_main/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/table.spec.move:7:9
│
7 │ ╭ pragma intrinsic = map,
8 │ │ map_new = new,
9 │ │ map_destroy_empty = destroy,
10 │ │ map_has_key = contains,
· │
19 │ │ map_spec_del = spec_remove,
20 │ │ map_spec_has_key = spec_contains;
│ ╰─────────────────────────────────────────────^
error: property `map_borrow_mut_with_default` is not valid in this context
┌─ ../.move/https___github_com_aptos-labs_aptos-core_git_main/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/table_with_length.spec.move:7:9
│
7 │ ╭ pragma intrinsic = map,
8 │ │ map_new = new,
9 │ │ map_destroy_empty = destroy_empty,
10 │ │ map_len = length,
· │
22 │ │ map_spec_len = spec_len,
23 │ │ map_spec_has_key = spec_contains;
│ ╰─────────────────────────────────────────────^
{
"Error": "Move compilation failed: extended checks failed"
}
開発環境
- Aptos CLI 1.0.7
- macOS Ventura 13.2.1
エラーの原因
Aptos CLIがエラーの原因でした。
バージョンを1.0.7から1.0.9にアップデートすれば、問題なくコンパイルできます。
Using the upcoming Aptos CLI 1.0.9 will solve this issue.
(Deepl翻訳)今後リリースされるAptos CLI 1.0.9を使用することで、この問題は解決されます。
質問したAptos Labs Github Isuueページはこちら
エラーの解決方法とコンパイル結果
すでに、1.0.9はリリースされているので、brewを使ってインストールしていきます。
アップデートには、以下のどちらかのコマンドを実行します。
$ brew update // brewで管理しているパッケージをアップデート
$ brew upgrade aptos // Aptos CLIのみアップデート
アップデートできたか確認します。
$ aptos -V
aptos 1.0.9
Aptos CLIがアップデートできたので、再度コンパイルしてみます。
$ aptos move compile
Compiling, may take a little while to download git dependencies...
UPDATING GIT DEPENDENCY https://github.com/aptos-labs/aptos-core.git
INCLUDING DEPENDENCY AptosFramework
INCLUDING DEPENDENCY AptosStdlib
INCLUDING DEPENDENCY MoveStdlib
BUILDING my_todo_list
{
"Result": [
"<default-profile-account-address>::todolist"
]
}
無事、コンパイルできました。
まとめ
同じエラーで悩んでいる方の助けになりましたらうれしいです。
最後までお読みいただきありがとうございました!
Discussion