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

标签 javascript node.js amazon-web-services npm aws-lambda

我创建了一个只有两个文件的非常基本的 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

当我安装这个包时,我可以毫无问题地使用我的错误类。但是,当我使用无服务器创建部署包并尝试将代码作为 AWS Lambda 的一部分运行时,lambda 似乎无法解析 HttpError 类。

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

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

而在本地它看起来像:

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

我已经从 AWS 下载了部署包,可以确认它看起来和本地版本一模一样。我在 lambda 文档中找不到任何暗示我不能对 javascript 模块使用 require 的内容。我做错了什么?

最佳答案

我发现了错误,这完全是我自己造成的,同时犯了两个不同的错误。

我正在检查我的 package-name.errors.HttpError 是否是我在安装包的代码中定义的相同 HttpError 类的实例,当然它不是。这导致我注销 require() 的结果,但是,我正在使用 JSON.stringify() 来执行此操作,这当然会 omit职能。因此,我相信我的包内的 require() 以某种方式没有被正确解析。

关于javascript - 无法在 AWS Lambda 中使用 NPM 包,require() 损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53797512/

相关文章:

javascript - 如何使用 jQuery .next() 选择下 2 个(或 2 个以上)项目?

javascript - 如何正确获取 DOM 元素的位置偏移量?

javascript - Grunt - 在运行任务之前动态设置配置

node.js - fatal error : CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory in production

java - 连接 Amazon MySQL 数据库时未找到合适的驱动程序

java - 微服务之间的通信和使用 REST 的内聚

javascript - 如何让控制台在后台运行脚本?

node.js - 大括号内包含单个项目的对象解构语法

mysql - Node.JS async/await MySQL 获取插入行的结果

amazon-web-services - ACM 请求的公共(public) SSL 证书未出现在 CloudFront 中