Open2

Dapp開発on ICPのメモ

T4D4T4D4

dfx deployを実行したら↓のエラーを吐いて失敗した時の解決策

error: the lock file /home/t4d4/practice/rust/task-management/icp_task_manager/Cargo.lock needs to be updated but --locked was passed to prevent this
If you want to try to generate the lock file without accessing the network, remove the --locked flag and use --offline instead.

エラーメッセージには、--lockedを外し、--offlineを付けて実行と書いてありますが、それだと解決しなかったので、事前にCargo updateを実行してCargo.lockを予め更新してからdfx deployを実行したら解決しました。

T4D4T4D4
dfx canister call <Project_Name_backend> <function_name> <args>

でターミナルからバックエンドのキャニスターの関数を呼ぶことが出来る。
dfx deployでデプロイした後に出てくるURLからキャニスターのテストが出来るが、それをターミナルからも呼び出せる。
URLを開いたら次のようなエラーが出ていた時や、シェルスクリプト等と組み合わせてテストをする時に使える。

error
An error happened in Candid canister:
D: Server returned an error:
  Code: 400 (Bad Request)
  Body: Specified ingress_expiry not within expected range: Minimum allowed expiry: 2024-03-05 06:48:14.810369959 UTC, Maximum allowed expiry: 2024-03-05 06:53:44.810369959 UTC, Provided expiry:        2024-03-05 07:14:00 UTC

    at gA._requestAndRetry (http://127.0.0.1:4943/index.js:2:26813)
    at async gA._requestAndRetry (http://127.0.0.1:4943/index.js:2:26772)
    at async gA._requestAndRetry (http://127.0.0.1:4943/index.js:2:26772)
    at async gA._requestAndRetry (http://127.0.0.1:4943/index.js:2:26772)
    at async http://127.0.0.1:4943/index.js:2:27628
    at async Promise.all (index 0)
    at async gA.query (http://127.0.0.1:4943/index.js:2:26923)
    at async http://127.0.0.1:4943/index.js:2:40509
    at async getDidJsFromTmpHack (http://127.0.0.1:4943/index.js:2:317831)
    at async fetchActor (http://127.0.0.1:4943/index.js:2:314439)