Šim*_*čka 9 amazon-web-services node.js aws-lambda es6-modules aws-lambda-layers
我在节点 v14 中有一个 lambda 函数,它从 lambda 层导入 AWS SDK v3。
在我的函数中,只有使用 CommonJS 语法,我才能使用层中的节点模块:
const { parseUrl } = require('@aws-sdk/url-parser');
Run Code Online (Sandbox Code Playgroud)
使用 ES 模块不起作用。
import { parseUrl } from '@aws-sdk/url-parser';
Run Code Online (Sandbox Code Playgroud)
它会抛出一个错误:
"errorMessage": "Cannot find package '@aws-sdk/url-parser' imported from /var/task/index.js\nDid you mean to import @aws-sdk/url-parser/dist-cjs/index.js?"
它应该有效。我"type": "module"在package.json本地有进口工作。当我指定 cjs 索引文件的完整路径时,它也会开始工作:
import { parseUrl } from '/opt/nodejs/node_modules/@aws-sdk/url-parser/dist-cjs/index.js';
Run Code Online (Sandbox Code Playgroud)
这真的很奇怪。
我查了一下NODE_PATH,/opt/nodejs/node_modules是这样的,所以不知道问题出在哪里。
完整的实现在这里,因此您可以复制错误: https ://github.com/simon-q/lambda-layer-es-modules-error
是 lambda 层损坏了还是我做错了什么?我真的很感激任何帮助。
谢谢。
这是 node_modules 文件夹中文件的路径错误。在此链接中,您可以获得有关该问题的更多详细信息。
我创建了一个自动修复它的无服务器插件,希望它对某人有所帮助。请点击链接: https: //www.npmjs.com/serverless-esm-layer
| 归档时间: |
|
| 查看次数: |
5467 次 |
| 最近记录: |