generated from amazon-archives/__template_Apache-2.0
-
Notifications
You must be signed in to change notification settings - Fork 61
Open
Description
Prior to node 24 a lambda handler could be a path to a directory, which would resolve the index.js, or main field from package.json.
I don't know if this was a documented or unintended feature, but it works as recently as node 22.
Reproduction
runtime: node24
handler: dir.handler
// dir/index.js
module.exports.handler = async (event) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from dir!'),
};
return response;
};Error with node 24
{
"errorType": "Error",
"errorMessage": "Directory import '/var/task/dir' is not supported resolving ES modules imported from /var/runtime/index.mjs\nDid you mean to import \"/var/task/dir/index.js\"?",
"trace": [
"Error [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import '/var/task/dir' is not supported resolving ES modules imported from /var/runtime/index.mjs",
"Did you mean to import \"/var/task/dir/index.js\"?",
" at finalizeResolution (node:internal/modules/esm/resolve:268:11)",
" at moduleResolve (node:internal/modules/esm/resolve:870:10)",
" at moduleResolveWithNodePath (node:internal/modules/esm/resolve:996:14)",
" at defaultResolve (node:internal/modules/esm/resolve:1039:79)",
" at #cachedDefaultResolve (node:internal/modules/esm/loader:757:20)",
" at ModuleLoader.resolve (node:internal/modules/esm/loader:734:38)",
" at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:317:38)",
" at onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:685:36)",
" at TracingChannel.tracePromise (node:diagnostics_channel:350:14)",
" at ModuleLoader.import (node:internal/modules/esm/loader:684:21)"
]
}Metadata
Metadata
Assignees
Labels
No labels