You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@metaplex-foundations/js实现铸币功能时遇TypeError错误求助

Solana铸币开发报错:TypeError: (0 , codecs_1.getBytesCodec) is not a function

我正在用@metaplex-foundation/js库开发Solana铸币功能,已经编写好React组件代码,也通过webpack配置重写解决了之前的问题,但运行时触发以下错误:
TypeError: (0 , codecs_1.getBytesCodec) is not a function
错误源自@solana/spl-token-metadata库。我是Solana新手,需要先成功建立Metaplex连接才能进行铸币操作,求技术支持。


React组件代码

import {
  useConnection,
  useWallet,
} from "@solana/wallet-adapter-react";
import { Metaplex, walletAdapterIdentity } from "@metaplex-foundation/js";
import {
  WalletMultiButton,
} from "@solana/wallet-adapter-react-ui";
const Content = () => {
  const wallet = useWallet();
  const { connection } = useConnection();

  const mintEntryPass = async () => {
    Metaplex.make(connection).use(walletAdapterIdentity(wallet));
    // const metaplexPlugin = ;
    // const candyMachineAddress = new PublicKey(
    //   process.env.REACT_APP_CANDY_MACHINE_ID
    // );
    let candyMachine;
    let walletBalance;
  };
  return (
              <div className="flex p-2 justify-center">
                <WalletMultiButton />
                <button onClick={mintEntryPass}>
                  Mint
                </button>
              </div>
  );
};

Webpack配置重写文件

const webpack = require("webpack");

module.exports = function override(config) {
  const fallback = config.resolve.fallback || {};
  Object.assign(fallback, {
    crypto: require.resolve("crypto-browserify"),
    path: require.resolve("path-browserify"),
    stream: require.resolve("stream-browserify"),
    assert: require.resolve("assert"),
    http: require.resolve("stream-http"),
    https: require.resolve("https-browserify"),
    os: require.resolve("os-browserify"),
    url: require.resolve("url"),
    zlib: require.resolve("browserify-zlib"),
    "process/browser": require.resolve("process/browser"),
  });
  config.resolve.fallback = fallback;
  config.plugins = (config.plugins || []).concat([
    new webpack.ProvidePlugin({
      process: "process/browser",
      Buffer: ["buffer", "Buffer"],
    }),
  ]);
  return config;
};

完整错误信息(翻译后)

React Router 在渲染期间捕获以下错误:TypeError: (0 , codecs_1.getBytesCodec) 不是一个函数
    在 ./node_modules/@solana/spl-token-metadata/lib/cjs/state.js (state.ts:6:1)
    在 options.factory (react refresh:6:1)
    在 __webpack_require__ (bootstrap:22:1)
    在 fn (hot module replacement:61:1)
    在 ./node_modules/@solana/spl-token-metadata/lib/cjs/index.js (index.ts:4:1)
    在 options.factory (react refresh:6:1)
    在 __webpack_require__ (bootstrap:22:1)
    在 fn (hot module replacement:61:1)
    在 ./node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/@solana/spl-token/lib/cjs/extensions/tokenMetadata/actions.js (actions.ts:4:1)
    在 options.factory (react refresh:6:1) 

解决方向

  1. 检查依赖版本兼容性

    • 查看@metaplex-foundation/js官方文档,确认推荐的@solana/web3.js、@solana/spl-token及@solana/spl-token-metadata版本
    • 执行npm list @solana/spl-token-metadata检查是否存在多版本冲突(错误栈显示路径中有嵌套的依赖,大概率是版本不一致)
    • 删除node_modules和package-lock.json,重新安装指定版本的依赖
  2. 修复Metaplex初始化代码
    当前代码创建Metaplex实例后未保存引用,后续无法调用铸币方法,修正如下:

    const mintEntryPass = async () => {
      if (!wallet.connected) return; // 先检查钱包是否连接
      // 创建并保存Metaplex实例
      const metaplex = Metaplex.make(connection).use(walletAdapterIdentity(wallet));
      // 后续可调用metaplex.nfts().create()或糖果机相关方法
    };
    
  3. 补充缺失依赖
    getBytesCodec来自@solana/codecs相关包,可能未安装或版本错误,执行:

    npm install @solana/codecs-core @solana/codecs-data-structures
    

内容的提问来源于stack exchange,提问作者niishaaant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:37:08