node.js - Lambda 代码适用于 node v8.10 但不适用于 nodejs v10.x
问题描述
我正在学习使用 v8.10 完成的 lambda 课程。我正在尝试使用 nodejs v10.x,因为这是我将来想在我的项目中使用的。
我不明白为什么“const uuid = require('uuid');” 行仅在 nodejs v10 中引发导入错误,但在 v8.10 中代码运行得很好。
代码:
const aws = require('aws-sdk');
const s3 = new aws.S3();
const uuid = require('uuid');
exports.handler = async (event) => {
console.log("Get the event to our S3POC class - " + JSON.stringify(event));
const newUUID = uuid.v4();
console.log("The file name is:" + newUUID);
//put our sentence into the s3 bucket
return s3.putObject({
Bucket: "helloworld-s3.arkhadbot.com",
Key: "test" + ".json"
});
};
错误
Response:
{
"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module 'uuid'",
"trace": [
"Runtime.ImportModuleError: Error: Cannot find module 'uuid'",
" at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
" at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
" at Object.<anonymous> (/var/runtime/index.js:45:30)",
" at Module._compile (internal/modules/cjs/loader.js:778:30)",
" at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)",
" at Module.load (internal/modules/cjs/loader.js:653:32)",
" at tryModuleLoad (internal/modules/cjs/loader.js:593:12)",
" at Function.Module._load (internal/modules/cjs/loader.js:585:3)",
" at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)",
" at startup (internal/bootstrap/node.js:283:19)"
]
}
Request ID:
"e9c300ff-d12e-47b9-a45a-996a1f78b5f5"
Function Logs:
START RequestId: e9c300ff-d12e-47b9-a45a-996a1f78b5f5 Version: $LATEST
2019-09-12T12:18:34.743Z undefined ERROR Uncaught Exception {"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'uuid'","stack":["Runtime.ImportModuleError: Error: Cannot find module 'uuid'"," at _loadUserApp (/var/runtime/UserFunction.js:100:13)"," at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)"," at Object.<anonymous> (/var/runtime/index.js:45:30)"," at Module._compile (internal/modules/cjs/loader.js:778:30)"," at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)"," at Module.load (internal/modules/cjs/loader.js:653:32)"," at tryModuleLoad (internal/modules/cjs/loader.js:593:12)"," at Function.Module._load (internal/modules/cjs/loader.js:585:3)"," at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)"," at startup (internal/bootstrap/node.js:283:19)"]}
END RequestId: e9c300ff-d12e-47b9-a45a-996a1f78b5f5
REPORT RequestId: e9c300ff-d12e-47b9-a45a-996a1f78b5f5 Duration: 5098.92 ms Billed Duration: 5100 ms Memory Size: 128 MB Max Memory Used: 36 MB
XRAY TraceId: 1-5d7a3795-41360f9ed871797c8ff32c3e SegmentId: 4f526b023d16ac66 Sampled: false
Unknown application error occurred
Runtime.ImportModuleError
解决方案
根据接受的答案,现在要求 lambda 不会直接获得第三方支持。(因为 Node 8 版本现在已被弃用,它可能仍然被接受)。
const aws = require('aws-sdk');
const s3 = new aws.S3();
// const uuid = require('uuid'); comment this out
exports.handler = async (event, context) => {
console.log("Get the event to our S3POC class - " + JSON.stringify(event));
// const newUUID = context.awsRequestId();
const newUUID = context.awsRequestId;
console.log("The file name is:" + newUUID);
//put our sentence into the s3 bucket
return s3.putObject({
Bucket: "helloworld-s3.arkhadbot.com",
Key: "test" + ".json"
});
};
AWS 请求 ID 可能如下所示: requestId: 'daf9dc5e-1628-4437-9e2d-2998efaa73b4'
推荐阅读
- azure-application-insights - On Prem IIS 和 Azure Application Insight
- powerbi - PowerBI 中的 Sumif 等效项不能与 DAX 函数一起正常工作
- spring-security - 是否可以使用自定义的 ServerAuthenticationEntryPoint 添加响应正文?
- php - PHP preg_match 不接受换行符
- visual-studio-code - 如何杀死 Ubuntu 主机上的 VSCode 远程服务
- python - XML 换行符实体和 Python 编码
- apache - 如何在 Apache 中使用代理引擎重定向到映射到其他主机的其他子域?
- r - 使用双 for 循环创建新变量的函数
- c++ - 如何使用 WinRT 创建经典的 win32 应用程序窗口?
- ios - 如何使用 swift 链接实现 GPUImage 过滤器?