AWS Lambda - Error: Cannot find module 'uuid/v4'
AWS Lambda - Error: Cannot find module 'uuid/v4'
我在 AWS Lambda JavaScript 代码中尝试使用 UUID 模块时收到此错误。
Error: Cannot find module 'uuid/v4'
我没有使用 AWSCLI 或 NPM,而是使用 AWS Lambda 仪表板在 JavaScript.
中编写 Lambda 函数
const AWS = require('aws-sdk');
const AWSUUID = require('uuid/v4');
const AWSGamelift = new AWS.GameLift();
exports.handler = async (event) =>
{
//...
我一直在搜索 Google 不停地试图找到一种方法来让 UUID 模块工作。我不想设置和使用 NPM 环境。
AWS Lambda 仪表板上是否有一些方法可以为 Lambda 代码提供对 UUID 模块的访问?
如果我们不想设置任何 npm 环境,AWS Lambda Layers 是一个选项。
从 AWS 控制台为您的 from Lambda 函数创建一个新层,并上传包含 uuid npm 包的 node_modules
目录的 zip 文件。
完成这项工作需要记住的几件事:
- 必须按照 AWS 文档维护目录结构 https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path
这很重要,否则 Lambda 函数将无法识别包。
- 您的 Lambda 函数的 IAM 角色必须具有
lambda:GetLayerVersion
操作权限,否则会出现丢失包的问题。上面提到的文档中再次清楚地解释了这一点。
完成这些后,您就可以执行您的代码了。示例响应
nodejs文件夹结构如下
您需要安装 uuid
包。 uuid
最近做了一个breaking change,就用你的方式吧。新方法是
const {"v4": uuidv4} = require('uuid');
希望对您有所帮助。
导航到该文件,并查看 node_modules/expo-constants/exponentConstants.web.js
中的第 3 行
import uuidv4 from 'uuid/v4
并将其更改为:
import {v4 as uuidv4} from 'uuid';
发生此错误的原因是 node_modules/uuid 中的文件结构,如果您发现不再有要导入的 uuidv4,而是导出 v4。您可以将开发人员编写 uuidv4 的所有地方更改为 v4,但使用 {this as that} 语法您不必重写一堆代码。
我使用完整路径并且它有效,因为我的文件不在 node_module 文件夹中:
const uuidv4 = require('./chat-server/node_modules/uuid').v4;
在我的例子中,我只需要导入 uuid,因为它被一些 graphql 包使用。
我在 AWS Lambda JavaScript 代码中尝试使用 UUID 模块时收到此错误。
Error: Cannot find module 'uuid/v4'
我没有使用 AWSCLI 或 NPM,而是使用 AWS Lambda 仪表板在 JavaScript.
中编写 Lambda 函数const AWS = require('aws-sdk');
const AWSUUID = require('uuid/v4');
const AWSGamelift = new AWS.GameLift();
exports.handler = async (event) =>
{
//...
我一直在搜索 Google 不停地试图找到一种方法来让 UUID 模块工作。我不想设置和使用 NPM 环境。
AWS Lambda 仪表板上是否有一些方法可以为 Lambda 代码提供对 UUID 模块的访问?
如果我们不想设置任何 npm 环境,AWS Lambda Layers 是一个选项。
从 AWS 控制台为您的 from Lambda 函数创建一个新层,并上传包含 uuid npm 包的 node_modules
目录的 zip 文件。
完成这项工作需要记住的几件事:
- 必须按照 AWS 文档维护目录结构 https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path
这很重要,否则 Lambda 函数将无法识别包。
- 您的 Lambda 函数的 IAM 角色必须具有
lambda:GetLayerVersion
操作权限,否则会出现丢失包的问题。上面提到的文档中再次清楚地解释了这一点。
完成这些后,您就可以执行您的代码了。示例响应
nodejs文件夹结构如下
您需要安装 uuid
包。 uuid
最近做了一个breaking change,就用你的方式吧。新方法是
const {"v4": uuidv4} = require('uuid');
希望对您有所帮助。
导航到该文件,并查看 node_modules/expo-constants/exponentConstants.web.js
中的第 3 行import uuidv4 from 'uuid/v4
并将其更改为:
import {v4 as uuidv4} from 'uuid';
发生此错误的原因是 node_modules/uuid 中的文件结构,如果您发现不再有要导入的 uuidv4,而是导出 v4。您可以将开发人员编写 uuidv4 的所有地方更改为 v4,但使用 {this as that} 语法您不必重写一堆代码。
我使用完整路径并且它有效,因为我的文件不在 node_module 文件夹中:
const uuidv4 = require('./chat-server/node_modules/uuid').v4;
在我的例子中,我只需要导入 uuid,因为它被一些 graphql 包使用。