Dev./Node.js
[Jest] 로컬 테스트시 aws lambda layer module not found 문제 해결
인쥭
2022. 8. 1. 15:35
반응형
AWS lambda 노드 런타임을 사용할 때, 공통 코드를 layer(계층)에 관리하고 있다면 다음과 같이 import하여 사용하게 된다.
const myLibrary = require('/opt/myLibrary');
exports.handler = function(event, context) {
myLibrary.greeting(); // hello!
}
그러나 해당 코드를 로컬에서 테스트하는 경우, 계층에 포함된 라이브러리가 로컬 환경의 /opt 하위 경로에 존재하지 않으므로 모듈을 임포트할 수 없는 문제가 발생한다.
jest를 사용하여 테스트하는 경우, jest.config.js에 다음과 같이 작성하여 문제를 쉽게 해결할 수 있다.
module.exports = {
moduleNameMapper: {
'^/opt/(.*)$': '<rootDir>/myLayers/$1',
},
};
해당 옵션을 사용하는 경우, /opt 경로로부터 임포트되는 모듈의 경로를 암시적으로 변경할 수 있게 된다.
mocha에서는 대응되는 옵션을 찾지 못하였음!