Solana测试程序Anchor Test失败,tsconfig.json需要一个类型为“json”的导入断言。

14

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

anchor测试--跳过部署BPF SDK: /Users/julia/.local/share/solana/install/releases/1.9.5/solana-release/bin/sdk/bpf cargo-build-bpf子进程:rustup toolchain list -v cargo-build-bpf子进程: 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个警告 完成发布 [优化] 目标(s) in 1.28s cargo-build-bpf子进程: /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 yarn run v1.22.17 警告 package.json:没有许可证字段 $ /Users/julia/Downloads/anchorTutorial/feeRedeemCounter/node_modules/.bin/ts-mocha -p ./tsconfig.json -t 1000000 'tests/**/*.ts'

类型错误:模块 “file:///Users/julia/Downloads/anchorTutorial/feeRedeemCounter/tsconfig.json” 需要一个“json”类型的导入断言 在新的NodeError(node:internal/errors:371:5) 在validateAssertions(node:internal/modules/esm/assert:82:15) 在defaultLoad(node:internal/modules/esm/load: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) 在async Promise.all(index 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) 错误 退出代码为1。信息请访问 https://yarnpkg.com/en/docs/cli/run 关于此命令的文档。错误:找不到程序地址。

2个回答

41

我通过运行

yarn add ts-mocha

解决了自己的问题。


3
似乎是版本问题。Anchor init 使用的是 8.0.0 版本,之后进行更新至 10.0.0 版本。 - Jorge M. Londoño P.
如果在 monorepo 中使用依赖管理工具(例如 lerna),请改用 yarn add ts-mocha -W - Whiteseal

0
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接