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

Medusa JS自定义支付插件本地测试失败求助

解决Medusa本地npm link支付插件无法加载的问题

核心问题分析

你遇到的问题本质是本地link的插件未被Medusa正确识别加载——即便手动添加了数据库记录,Medusa仍找不到对应的服务实例。对比官方npm安装的插件,本地插件大概率在编译、配置或link环节存在疏漏。

分步解决方法

1. 检查插件package.json关键配置

  • 确认name字段:必须和你在Medusa项目medusa-config.js里配置的resolve值完全一致(比如官方Stripe插件的name是medusa-payment-stripe)。
  • 确认main字段:指向编译后的入口文件,比如官方插件是"main": "dist/index.js"。若你的本地插件用TypeScript编写,未编译的话Medusa无法识别,必须先执行npm run build生成dist目录。

2. 确保Medusa项目正确配置插件

在medusa-config.js的plugins数组中添加本地插件,示例:

plugins: [
  // 其他插件...
  {
    resolve: "medusa-payment-stripe", // 必须和插件package.json的name一致
    options: {
      api_key: "sk_test_your_key",
      webhook_secret: "whsec_your_secret",
    },
  },
]

注意:若之前安装过官方Stripe插件,先执行npm uninstall medusa-payment-stripe,避免link包与npm包冲突。

3. 编译本地插件代码

官方Stripe插件基于TypeScript开发,复制源码后必须完成编译:

  1. 在插件目录执行npm install安装依赖
  2. 执行npm run build,确认生成dist目录且dist/index.js存在

4. 修复npm link链路问题

  • 先在插件目录执行npm link,将插件注册到全局npm链路
  • 回到Medusa项目目录,执行npm link medusa-payment-stripe(替换为你的插件name)
  • 检查Medusa项目的node_modules/medusa-payment-stripe是否为指向本地插件目录的符号链接,若不是则删除该目录后重新link

5. 验证数据库payment_provider记录

手动添加的记录需满足:

  • provider_id为stripe(必须和插件入口文件导出的服务key一致)
  • is_installed设为1(布尔值true)
  • metadata字段设为符合JSON格式的值,比如{"enabled": true}
  • 确保无重复的stripe记录,如有则删除旧记录

6. 清理缓存并重启服务

  • 删除Medusa项目根目录的.medusa缓存目录
  • 重启Medusa服务器(npm run start),避免缓存的旧插件配置干扰

验证插件加载

重启后,可通过Medusa的Store API调用GET /store/payment-methods,检查是否返回stripe支付方式,确认插件加载正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:30:05