由于 bigint 错误,我的 Javascript 文件无法运行

Rou*_*yKM 4 javascript npm solana metaplex

我正在尝试使用 @metaplex/js 进行一些 NFT 铸造。通常我的 .js 文件可以正常工作,但是当我运行该文件时会出现此错误。

bigint:加载绑定失败,将使用纯JS(尝试npm runrebuild?)

我实在不明白这意味着什么。因此,我尝试运行 npm runrebuild 但据说重建是一个丢失的脚本,我找不到安装它的方法。

这是我的代码:

import { Connection, programs} from "@metaplex/js";
import { Loader } from "@solana/web3.js";
const { metadata: {Metadata}} = programs;


const connection = new Connection("devnet");
const tokenPublicKey = 'my_adress';

const run = async() => {
    try{
        const ownedMetadata = await Metadata.Loader(connection,tokenPublicKey)
        console.log(ownedMetadata)
    }
    catch{
        console.log('Failed to fetch')
    }

};

run();
Run Code Online (Sandbox Code Playgroud)

如果您有任何想法,或者只是解释我的错误的含义,我将不胜感激。

Lor*_*iva 5

您收到此错误是因为嵌套依赖项的编译步骤在您的平台上可能无法成功。这个问题提供了很好的解释。

[...] 发生这种情况是因为我们的依赖项之一(bigint-buffer)在安装时运行编译步骤,并且该步骤可能会因多种原因而失败。原因之一是您的系统可能没有该库正在寻找的构建工具。您可以在 Windows 上安装这些构建工具(请参阅https://www.npmjs.com/package/windows-build-tools),但实际上并不需要这样做,因为它会自动回退到纯 JS 解决方案。虽然我同意......这个警告非常烦人。

但是,这应该会给您一个警告,并且仍然允许您编译代码。

值得注意的是,Metaplex 当前的 JS SDK 将被弃用,取而代之的是新的: https: //github.com/metaplex-foundation/js-next

借助新的 JS SDK,您可以使用以下代码获取 NFT。

import { Metaplex } from "@metaplex-foundation/js";
import { Connection, clusterApiUrl } from "@solana/web3.js";

const connection = new Connection(clusterApiUrl("mainnet-beta"));
const metaplex = new Metaplex(connection);
const mintAddress = new PublicKey("ATe3DymKZadrUoqAMn7HSpraxE4gB88uo1L9zLGmzJeL");

const nft = await metaplex.nfts().findByMint({ mintAddress });
Run Code Online (Sandbox Code Playgroud)