0

我有一个 Amplify 项目,我想在其中使用 lambda 层。层和 lambda 已使用 Amplify CLI 进行配置。

Lambda 层命名为“common”。该文件是./amplify/backend/function/common/opt/param.js. 它导出一个函数:

const getValue = async (name) => {
...
}
module.exports = getValue;

在我的 lambda 函数中,我想使用上面的辅助函数。但是,我不知道如何导入它。我努力了:

const getValue = require('param');
const getValue = require('./param');
const getValue = require('/opt/param');
const getValue = require('./opt/param');

但它们都因错误而失败,例如:

"errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module '/opt/param'

另请注意,在推送图层并将其连接到最新的图层版本后,我已经更新了 lambda。所以代码应该可用于 lambda。

4

3 回答 3

2

你可以把它放在你的package.json

{
    ...
    "dependencies": {
        ...
        "layer": "file:../../opt/"
    }
}

然后你安装软件包。

const { ... } = require('layer/...');
于 2020-07-12T02:58:46.727 回答
1

(也添加一个答案,以便此重要信息不会隐藏在评论部分中)。

这是 Amplify CLI 中的一个错误。它已在版本 4.25.0 中修复。

导入层代码(位于opt/目录中)的正确方法现在再次合乎逻辑:

require('/opt/<module-name>')

于 2020-07-27T09:32:48.453 回答
1

我只是在寻找更好的解释/解决方案(或者如果它可能是一个错误?)但是如果你将模块放在由 amplify 生成的默认 opt/ 目录中,它会显示在这里: const getValue = require('/opt/opt/param');

于 2020-07-11T00:03:07.163 回答