Skip to content

Commit

Permalink
fix(lambda-nodejs): maximum call stack size exceeded with relative en…
Browse files Browse the repository at this point in the history
…try file

Use absolute paths in `findUp()` to avoid this.

Fixes aws#8902
  • Loading branch information
jogold committed Jul 6, 2020
1 parent 5e43348 commit 63e99db
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
14 changes: 9 additions & 5 deletions packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts
Expand Up @@ -54,12 +54,16 @@ export function nodeMajorVersion(): number {
* Find a file by walking up parent directories
*/
export function findUp(name: string, directory: string = process.cwd()): string | undefined {
const { root } = path.parse(directory);
if (directory === root && !fs.existsSync(path.join(directory, name))) {
return undefined;
}
const absoluteDirectory = path.resolve(directory);

if (fs.existsSync(path.join(directory, name))) {
return directory;
}
return findUp(name, path.dirname(directory));

const { root } = path.parse(absoluteDirectory);
if (absoluteDirectory === root) {
return undefined;
}

return findUp(name, path.dirname(absoluteDirectory));
}
6 changes: 6 additions & 0 deletions packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts
Expand Up @@ -10,4 +10,10 @@ test('findUp', () => {

// Starting at a specific path
expect(findUp('util.test.ts', path.join(__dirname, 'integ-handlers'))).toMatch(/aws-lambda-nodejs\/test$/);

// Non existing file starting at a non existing relative path
expect(findUp('not-to-be-found.txt', 'non-existing/relative/path')).toBe(undefined);

// Starting at a relative path
expect(findUp('util.test.ts', 'test/integ-handlers')).toMatch(/aws-lambda-nodejs\/test$/);
});

0 comments on commit 63e99db

Please sign in to comment.