无法使用 Nodejs14.x ES 模块在 AWS lambda 中导入包
Cannot import package in AWS lambda with Nodejs14.x ES module
我有一个层,其中 node_modules 的路径是 nodejs/node14/node_modules
。
使用该层,我尝试在 Lambda 函数中导入一个包,例如 'aws-cloudfront-sign',如下所示:
import cfsign from 'aws-cloudfront-sign'
我收到错误消息
Cannot find package 'aws-cloudfront-sign' imported from /var/task/signer.js\nDid you mean to import aws-cloudfront-sign/lib/cloudfrontUtil.js?
但是如果我像这样导入包:
import cfsign from '/opt/nodejs/node14/node_modules/aws-cloudfront-sign/lib/cloudfrontUtil.js'
成功了。
你知道为什么吗?我怎样才能正确导入包?
这似乎是一个错误。它发生在图层和 SDK 中。 Github:
上有许多类似的未解决问题
Nodejs Lambda: Cannot find package 'aws-sdk'
Cannot find package when using ES Module and Lambda Layer
ES6 imports don't work in @aws-sdk/client-iotsitewise
如您所见,目前唯一的解决方法似乎是使用绝对路径。例如:
import { DynamoDB } from 'aws-sdk;'
失败,而
import AWS from '/var/runtime/node_modules/aws-sdk/lib/aws.js';
const { DynamoDB } = AWS;
会起作用。
我建议您将您的意见添加到现有的未决问题中,以帮助确保它得到关注。
我有一个层,其中 node_modules 的路径是 nodejs/node14/node_modules
。
使用该层,我尝试在 Lambda 函数中导入一个包,例如 'aws-cloudfront-sign',如下所示:
import cfsign from 'aws-cloudfront-sign'
我收到错误消息
Cannot find package 'aws-cloudfront-sign' imported from /var/task/signer.js\nDid you mean to import aws-cloudfront-sign/lib/cloudfrontUtil.js?
但是如果我像这样导入包:
import cfsign from '/opt/nodejs/node14/node_modules/aws-cloudfront-sign/lib/cloudfrontUtil.js'
成功了。
你知道为什么吗?我怎样才能正确导入包?
这似乎是一个错误。它发生在图层和 SDK 中。 Github:
上有许多类似的未解决问题Nodejs Lambda: Cannot find package 'aws-sdk'
Cannot find package when using ES Module and Lambda Layer
ES6 imports don't work in @aws-sdk/client-iotsitewise
如您所见,目前唯一的解决方法似乎是使用绝对路径。例如:
import { DynamoDB } from 'aws-sdk;'
失败,而
import AWS from '/var/runtime/node_modules/aws-sdk/lib/aws.js';
const { DynamoDB } = AWS;
会起作用。
我建议您将您的意见添加到现有的未决问题中,以帮助确保它得到关注。