【问题标题】:Solana Test Program Anchor Test failing tsconfig.json" > needs an import assertion of type "json"Solana 测试程序锚点测试失败 tsconfig.json\" > 需要类型为 \"json\" 的导入断言
【发布时间】:2023-01-31 14:04:36
【问题描述】:

我运行了 anchor test --skip-deploy 它应该做的就是初始化我的程序,但我得到的只是这个错误,我无法解决。我检查了 tsconfig.json 设置,它们应该没问题。这只是默认的锚点设置,我不会在任何地方导入任何不寻常的 JSON 文件。

锚点测试 --skip-deploy BPF SDK: /Users/julia/.local/share/solana/install/releases/1.9.5/solana-release/bin/sdk/bpf cargo-build-bpf child: rustup 工具链列表 -v cargo-build-bpf child: cargo +bpf build --target bpfel-unknown-unknown --release 警告: 未使用的变量:ctx --> programs/feeRedeemCounter/src/lib.rs:8:23 | 8 | pub fn initialize(ctx: Context) -> ProgramResult { | ^^^ 帮助:如果这是故意的,前缀 它带有下划线:_ctx | = 注意: #[warn(unused_variables)]默认开启

警告:feeRedeemCounter (lib) 生成了 1 个警告 在 1.28s cargo-build-bpf child 中完成发布 [优化] 目标: /Users/julia/.local/share/solana/install/releases/1.9.5/solana-release/bin/sdk/bpf/dependencies/bpf-tools/llvm/bin/llvm-readelf --dyn-symbols /Users/julia/Downloads/anchorTutorial/feeRedeemCounter/target/deploy/fee_redeem_counter.so

要部署此程序:$ solana program deploy /Users/julia/Downloads/anchorTutorial/feeRedeemCounter/target/deploy/fee_redeem_counter.so 程序地址将默认为此密钥对(用 --program-id): /Users/julia/Downloads/anchorTutorial/feeRedeemCounter/target/deploy/fee_redeem_counter-keypair.json 纱线运行 v1.22.17 警告 package.json:没有许可证字段 $ /Users/julia/Downloads/anchorTutorial/feeRedeemCounter/node_modules/.bin/ts-mocha -p ./tsconfig.json -t 1000000 '测试/**/*.ts'

类型错误:模块 “文件:///Users/julia/Downloads/anchorTutorial/feeRedeemCounter/tsconfig.json” 需要一个类型为“json”的导入断言 在新的 NodeError(节点:内部/错误:371:5) 在 validateAssertions(节点:内部/模块/esm/断言:82:15) 在默认负载(节点:内部/模块/esm/负载:24:3) 在 ESMLoader.load (node:internal/modules/esm/loader:359:26) 在 ESMLoader.moduleProvider (node:internal/modules/esm/loader:280:58) 在新的 ModuleJob (node:internal/modules/esm/module_job:66:26) 在 ESMLoader.#createModuleJob (node:internal/modules/esm/loader:297:17) 在 ESMLoader.getModuleJob (node:internal/modules/esm/loader:261:34) 在异步 Promise.all(索引 0) 在 ESMLoader.import (node:internal/modules/esm/loader:337:24) 在 importModuleDynamicallyWrapper (node:internal/vm/module:437:15) 在 formattedImport (/Users/julia/Downloads/anchorTutorial/feeRedeemCounter/node_modules/mocha/lib/nodejs/esm-utils.js:7:14) 在 Object.exports.requireOrImport (/Users/julia/Downloads/anchorTutorial/feeRedeemCounter/node_modules/mocha/lib/nodejs/esm-utils.js:48:32) 在 Object.exports.loadFilesAsync (/Users/julia/Downloads/anchorTutorial/feeRedeemCounter/node_modules/mocha/lib/nodejs/esm-utils.js:103:20) 在 singleRun (/Users/julia/Downloads/anchorTutorial/feeRedeemCounter/node_modules/mocha/lib/cli/run-helpers.js:125:3) 在 Object.exports.handler (/Users/julia/Downloads/anchorTutorial/feeRedeemCounter/node_modules/mocha/lib/cli/run.js:374:5) error 命令失败,退出代码为 1。 info 访问 https://yarnpkg.com/en/docs/cli/run 获取有关此的文档 命令。错误:找不到程序地址。

【问题讨论】:

    标签: testing rust anchor smartcontracts solana


    【解决方案1】:

    我通过运行解决了自己的问题

    纱线添加 ts-mocha

    【讨论】:

    • 好像是版本问题。 Anchor init 使用 8.0.0 并在执行此操作后更新到 10.0.0
    【解决方案2】:
    yarn add ts-mocha
    

    这对我不起作用。我删除了package-lock.json,然后将 npm 包更新到最新

    "devDependencies": {
        "@types/chai": "^4.3.4",
        "@types/mocha": "^10.0.1",
        "@types/node": "^18.11.18",
        "chai": "^4.3.7",
        "mocha": "^10.2.0",
        "ts-mocha": "^10.0.0",
        "typescript": "^4.9.5"
    

    然后更新了提供者代码:

    import * as anchor from "@project-serum/anchor";
    
    const provider = anchor.AnchorProvider.env();
    anchor.setProvider(provider);
    

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 2021-10-25
      • 2017-04-10
      • 2020-10-08
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 2017-10-31
      • 2017-04-05
      相关资源
      最近更新 更多