【发布时间】:2022-06-22 00:14:08
【问题描述】:
我将 knex 模块(例如)从 lambda 层添加到我的函数 lambda (Node.js 14.x)。
当我在 AWS Lambda 中部署我的函数并在我的 lambda 函数中使用 require 时,import 不起作用。
注意:在本地与 require 和 import 一起使用,模块安装在我的 lambda 函数中的 node_modules 中。
要求(有效)
index.js
const knex = require('knex')(myConfig);
package.json
{
"name": "my-function",
"version": "1.0.0",
"main": "index.js",
"dependencies": {}
}
导入(无效)
index.js
import knexModule from 'knex';
const {knex} = knexModule;
const db = knex(configKnex);
package.json
{
"name": "my-function",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"dependencies": {}
}
错误
Response
{
"errorType": "Error",
"errorMessage": "Cannot find package 'knex' imported from /var/task/index.js\nDid you mean to import knex/knex.js?",
"trace": [
"Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'knex' imported from /var/task/index.js",
"Did you mean to import knex/knex.js?",
" at new NodeError (internal/errors.js:322:7)",
" at packageResolve (internal/modules/esm/resolve.js:732:9)",
" at moduleResolve (internal/modules/esm/resolve.js:773:18)",
" at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:887:11)",
" at Loader.resolve (internal/modules/esm/loader.js:89:40)",
" at Loader.getModuleJob (internal/modules/esm/loader.js:242:28)",
" at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:76:40)",
" at link (internal/modules/esm/module_job.js:75:36)",
" at process.runNextTicks [as _tickCallback] (internal/process/task_queues.js:60:5)",
" at /var/runtime/deasync.js:23:15"
]
}
如何在 AWS Lambda 中使用 import?
我从 AWS Lambda 下载的图层如下所示:
【问题讨论】:
-
this 有帮助吗?
-
@ApoorvaChikara 我按照说明进行操作,但没有成功。谢谢。
标签: node.js aws-lambda import require aws-lambda-layers