mcpField
C
converting-minikit-to-farcaster

converting-minikit-to-farcaster

github.com/base开发120317 次安装1 天前更新
代码仓库

关于 converting-minikit-to-farcaster

面向将应用从 MiniKit 迁移到 Farcaster SDK 的开发者,提供钩子到 SDK 操作的对应关系、升级注意事项和转换步骤。还列出上下文异步访问及常见错误的处理方式。

主要功能

  1. 01MiniKit 钩子与 SDK 操作映射
  2. 02SDK v0.2.0+ 变更说明
  3. 03上下文异步访问示例
  4. 04迁移步骤与依赖更新指引
  5. 05常见错误排查

适用场景

  1. 01将 MiniKit 应用迁移到 Farcaster SDK
  2. 02更新 SDK 后调整上下文访问
  3. 03排查迁移中的类型或组件问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/base/skills --skill converting-minikit-to-farcaster

安装后在 Claude Code 中输入/converting-minikit-to-farcaster确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AUTH.md
DEPENDENCIES.md
EXAMPLES.md
LICENSE
MANIFEST.md
MAPPING.md
PITFALLS.md
PROVIDER.md
README.md
analyze_project.py
validate_conversion.py

详细介绍

MiniKit 到 Farcaster SDK

重大变更(SDK v0.2.0+)

  1. sdk.context 是一个 Promise — 必须等待
  2. sdk.isInMiniApp() 不接受参数
  3. sdk.actions.setPrimaryButton() 没有 onClick 回调

检查版本:npm list @farcaster/miniapp-sdk

快速参考

MiniKitFarcaster SDK说明
useMiniKit().setFrameReady()await sdk.actions.ready()
useMiniKit().contextawait sdk.context异步
useMiniKit().isSDKLoadedawait sdk.isInMiniApp()无参数
useClose()await sdk.actions.close()
useOpenUrl(url)await sdk.actions.openUrl(url)
useViewProfile(fid)await sdk.actions.viewProfile({ fid })
useViewCast(hash)await sdk.actions.viewCast({ hash })
useComposeCast()await sdk.actions.composeCast({ text, embeds })
useAddFrame()await sdk.actions.addMiniApp()
usePrimaryButton(opts, cb)await sdk.actions.setPrimaryButton(opts)无回调
useAuthenticate()sdk.quickAuth.getToken()参见 AUTH.md

上下文访问模式

// WRONG
const fid = sdk.context?.user?.fid;

// CORRECT
const context = await sdk.context;
const fid = context?.user?.fid;

在 React 组件中,使用状态:

const [context, setContext] = useState(null);

useEffect(() => {
  const load = async () => {
    const ctx = await sdk.context;
    setContext(ctx);
  };
  load();
}, []);

转换工作流

  1. 确认 Node.js >= 22.11.0
  2. 更新依赖项 — 参见 DEPENDENCIES.md
  3. 替换导入:@coinbase/onchainkit/minikit → @farcaster/miniapp-sdk
  4. 使用上方参考内容转换钩子
  5. 添加 FrameProvider — 参见 PROVIDER.md
  6. 更新清单:frame → miniapp — 参见 MANIFEST.md

常见错误

“Property 'user' does not exist on type 'Promise'” → 访问属性前等待 sdk.context

“Expected 0 arguments, but got 1” → 从 sdk.isInMiniApp() 中移除参数

组件中的上下文为 null → 确保 FrameProvider 位于你的 Provider 链中

参考资料

评论

支持 Markdown