【问题标题】:TypeError: Cannot assign to read only property 'exports' of objectTypeError:无法分配给对象的只读属性“导出”
【发布时间】:2019-10-06 07:59:48
【问题描述】:
  1. 尝试创建将插入 DynamoDB 表的 AWS lambda。

2 .尝试更改导入/要求

//我用在什么地方

const { ReportRepo } = require("../repos/reportsRepo");
const { withProcessEnv } = require("../util/dynamoDb");

const _client = withProcessEnv(process.env);
const _repo = new ReportRepo(_client);

//DynamoDB 客户端

const { DocumentClient } = require("aws-sdk/clients/dynamodb");

const withProcessEnv = ({
  AWS_ENDPOINT,
  AWS_REGION,
  AWS_ACCESS_KEY_ID,
  AWS_SECRET_ACCESS_KEY
}) => () => {
  const options = {
    endpoint: AWS_ENDPOINT,
    region: AWS_REGION,
    accessKeyId: AWS_ACCESS_KEY_ID,
    secretAccessKey: AWS_SECRET_ACCESS_KEY
  };

  return new DocumentClient(options);
};

module.exports = withProcessEnv;

【问题讨论】:

  • this one 的可能副本(Lambda 期望 module.exports 增加属性而不是覆盖)。
  • @StockOverflaw 我在代码的其他地方使用了导出。你认为这是造成这种情况的原因吗?
  • 除非它在同一个文件中,否则我会说不:module.exports 应该是通过require 加载的文件的本地文件。即使在 Lambda AFAIK 的上下文中。
  • @StockOverflaw 我也这么认为。所以不知道为什么这不起作用。
  • 这有点不一致:你有一个关于分配给只读道具的错误,但在this answer,你评论说你收到一个关于module.exportsundefined 的错误。这两个错误似乎不兼容:确保您测试已经在完全相同的环境中提出的所有组合(保存的文件等),除了我在这里迷路了! ://

标签: node.js amazon-web-services webpack aws-lambda amazon-dynamodb


【解决方案1】:

尝试在 DynamoDB 客户端中导出对象。

module.exports = {withProcessEnv};

const { DocumentClient } = require("aws-sdk/clients/dynamodb");

const withProcessEnv = ({
  AWS_ENDPOINT,
  AWS_REGION,
  AWS_ACCESS_KEY_ID,
  AWS_SECRET_ACCESS_KEY
}) => () => {
  const options = {
    endpoint: AWS_ENDPOINT,
    region: AWS_REGION,
    accessKeyId: AWS_ACCESS_KEY_ID,
    secretAccessKey: AWS_SECRET_ACCESS_KEY
  };

  return new DocumentClient(options);
};

module.exports = {withProcessEnv};

【讨论】:

    【解决方案2】:

    【讨论】:

    • 尝试使用exports.handler = withProcessEnv;而是
    • 试过这个并得到“无法设置未定义的属性'处理程序'”。 const {handler} = require()
    • 您是否尝试过导出或导出?我编辑了答案
    • 移除模块。 “处理程序不是函数” const { handler } = require("../util/dynamoDb"); const _client = handler(process.env);
    • 您为 lambda 选择了什么处理程序(您可以在 aws lambda 控制台中查看)?
    猜你喜欢
    • 2023-03-13
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2017-11-30
    • 2021-01-08
    相关资源
    最近更新 更多