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

AWS Lambda运行报错Cannot find module 'stripe'问题排查

问题现象

Amplify托管的后端应用调用Lambda函数时抛出模块找不到错误:

Error: Cannot find module 'stripe'
Require stack:

  • /var/task/index.js
  • /var/runtime/UserFunction.js
  • /var/runtime/index.js
  • 已在项目根目录安装stripe包,根目录依赖列表可查,但目标Lambda函数目录的依赖中无stripe
  • 尝试在functions文件夹下安装stripe后问题未解决
  • 当前环境版本:React 17.0.2,stripe 9.6.0

关联代码

Lambda函数源码

const aws = require('aws-sdk');
const ddb = new aws.DynamoDB({apiVersion: '2012-10-08'});
const stripe = require('stripe')('secret key');

/**
 * @type {import('@types/aws-lambda').APIGatewayProxyHandler}
 */


exports.handler = async (event) => {

    try {
        const tableName = process.env.tableName
        const {username, email} = event.arguments.input

        const account = await stripe.accounts.create({
            type: 'express',
            email: `${email}`,
            metadata: {user: `${username}`}
        });

        console.log("Account creation response: ", account)
        console.log("Account id: ", account.id)

        // 存储Stripe账号ID到DynamoDB
        let ddbParams = {
            Item: {
                'stripe_id': `${account.id}`
            },
            TableName: tableName
        }
        
        try {
            await ddb.putItem(ddbParams).promise()
            console.log("Successfully updated stripe_id field")
        } catch (err) {
            console.log("Storing to DB error: ", err)
        }

        const accountId = account.id

        const accountLink = await stripe.accountLinks.create({
            account: accountId,
            // 上线时替换为正式站点地址
            refresh_url: 'http://localhost:3000/profile',
            return_url: 'http://localhost:3000/listingform',
            type: 'account_onboarding',
          });

          console.log('Account link response :', accountLink)

          return accountLink
    } catch (err) {
        throw new Error(err)
    }

};

初始函数package.json配置

函数目录初始未声明stripe依赖,配置如下:

{
  "name": "createStripeConnectAccount",
  "version": "2.0.0",
  "description": "Lambda function generated by Amplify",
  "main": "index.js",
  "license": "Apache-2.0",
  "devDependencies": {
    "@types/aws-lambda": "^8.10.92"
  }
}

问题更新

已将stripe添加到函数目录的dependencies依赖中,仍触发相同报错,更新后的package.json如下:

{
  "name": "createStripeConnectAccount",
  "version": "2.0.0",
  "description": "Lambda function generated by Amplify",
  "main": "index.js",
  "license": "Apache-2.0",
  "devDependencies": {
    "@types/aws-lambda": "^8.10.92"
  },
  "dependencies": {
    "save": "^2.5.0",
    "stripe": "^9.6.0"
  }
}
修复步骤

问题根源是Amplify对Lambda函数的依赖打包逻辑:Amplify只会读取、打包单个函数专属目录下的依赖,项目根目录、functions总目录下安装的依赖不会被打包进Lambda部署包,且旧的部署缓存会导致新安装的依赖不生效。按以下步骤操作即可修复:

  1. 进入目标函数的专属本地目录,路径格式为amplify/backend/function/createStripeConnectAccount/
  2. 删除该目录下的node_modules文件夹和package-lock.json文件,执行npm install重新安装所有依赖,安装完成后确认当前目录下node_modules内存在stripe文件夹
  3. 返回项目根目录,执行amplify push --force强制跳过缓存重新打包部署所有资源
  4. 如果仍报错,执行amplify update function,选择对应函数,进入高级配置项,确认已开启「打包本地node_modules依赖」选项,保存后重新推送即可

内容的提问来源于stack exchange,提问作者Zio-4

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 11:03:21