• 主页
  • 无法在AWS Lambda中使用NPM包,require()已损坏

无法在AWS Lambda中使用NPM包,require()已损坏

我已经创建了一个非常基本的NPM包,其中只有两个文件。

index.js:

  module.exports = {
      errors: {
        HttpError: require('./src/errors').HttpError,
        test: 'value'
      }
    }

src/errors.js:

class HttpError extends Error {
  constructor (message, code) {
    super(message)
    this.statusCode = code

    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, HttpError)
    }
  }
}

exports.HttpError = HttpError

当我安装这个包时,我可以使用我的error类而不会出现任何问题。但是,当我使用Serverless创建部署包并尝试将代码作为AWS Lambda的一部分运行时,lambda似乎无法解析HttpError类。

在AWS上运行的lambda函数中,当我需要将包作为const并注销时,日志如下所示:

{"errors":{"test":"value"}}

而在本地,它看起来像:

{ errors:
   { HttpError: [Function: HttpError],
     test: 'value' } }

我已经从AWS下载了部署包,并且可以确认它看起来与本地版本完全相同。我在lambda文档中找不到任何暗示我不能使用require for javascript模块的东西。我做错了什么?

转载请注明出处:http://www.jxbyjx.net/article/20230428/1017162.html