Ошибка типа машины Solana Candy: не удается прочитать свойства undefined (чтение '_bn')
Я слежу за этой статьей как с практикой.
ts-node packages/cli/src/candy-machine-cli.ts verify --env devnet --keypair "C:\Windows\System32\~\.config\solana\devnet.json"
Пытаясь проверить конфетный автомат, я наткнулся на
TypeError: невозможно прочитать свойства undefined (чтение '_bn') в isPublicKeyData (C: \ Users \ my-userName \ Source \ Repos \ metaplex \ js \ node_modules@ solana \ web3.js \ src \ publickey.ts:29:35) в новом PublicKey (C: \ Users \ my-userName \ Source \ Repos \ metaplex \ js \ node_modules@ solana \ web3.js \ src \ publickey.ts:45:9) в C: \ Users \ my-userName \ Source \ Repos \ metaplex \ js \ packages \ cli \ src \ candy-machine-cli.ts:326:27 на шаге (C: \ Users \ my-userName \ Source \ Repos \ metaplex \ js \ packages \ cli \ src \ candy-machine-cli.ts:64:23) в Object.next (C: \ Users \ my-userName \ Source \ Repos \ metaplex \ js \ packages \ cli \ src \ candy-machine-cli.ts:45 : 53) при выполнении (C: \ Users \ my-userName \ Source \ Repos \ metaplex \ js \ packages \ cli \ src \ candy-machine-cli.ts:36:58) в processTicksAndRejection (node: internal / process / task_queues:96:5)
Путем быстрого поиска в Интернете некоторые люди говорят, что мне нужно сначала создать конфетный автомат. Так что я побежал
ts-node packages/cli/src/candy-machine-cli.ts create_candy_machine --env devnet --keypair "C:\Windows\System32\~\.config\solana\devnet.json"
Но это дало мне ту же ошибку.
Буду признателен за любой совет о том, как я могу решить эту проблему.
3 ответа
Пытаясь решить другую проблему, я обнаружил, что проблема как-то связана с
ts-node
версия, которую я использовал.
Проблема решена после обновления командой ниже
npm i ts-node@latest
Для всех, кто увидит это с этого момента (по крайней мере, до тех пор, пока какое-либо другое обновление не сделает это устаревшим), вы также можете получить эту ошибку просто потому, что пытаетесь создать Candy Machine v1, что, как мне сказали в разногласиях Metaplex, не будет работать больше.
Убедитесь, что вы выполняете шаги по использованию v2 (на дату, когда я это пишу), как описано в официальных документах здесь: https://docs.metaplex.com/candy-machine-v2/configuration. Вы просто будете использовать другую команду для пакета v2.
Просмотрите документы, чтобы убедиться, что вы готовы, но в качестве уверенности, если ваши активы настроены и готовы к работе, начните здесь с настройки шага 2 (вы можете создать файл конфигурации в любом месте, если вы вставите правильный путь к нему, как только он потребуется), затем перейдите к шагу 4.
Вам необходимо предоставить открытый ключ для
getNameAccountKey
, например
import { Connection, PublicKey } from '@solana/web3.js';
import { getHashedName, getNameAccountKey, NameRegistryState } from '@solana/spl-name-service';
...
class SomeClass {
constructor(private readonly configService: ConfigService) {
this.publicKey = new PublicKey(
this.configService.get('SOLANA_NAME_SERVICE_PUBLIC_KEY'), // that public key taken from `.env` config file
);
}
...
private async resolveSnsName(name: string, connection: Connection): Promise<string> {
try {
const parsedName = name.replace('.sol', '');
const hashedName = await getHashedName(parsedName);
const domainKey = await getNameAccountKey(hashedName, undefined, this.publicKey);
const registry = await NameRegistryState.retrieve(connection, domainKey);
return registry.owner.toBase58();
} catch {
return null;
}
}
}