2017-11-13 2 views
3

AWS 람다 번들로 ES6, babel 및 Webpack 2를 사용하고 있습니다. 그런 다음 AWS SAM 로컬을 사용하여 테스트를 수행하고 있습니다. 내가 API를 쳤을 때 나는 다음과 같은 오류가 - 내 webpack.config.js 여기Webpack 및 AWS Lambda 문제 - 모듈에서 누락 된 처리기

Handler 'handler' missing on module 'dist/main' 

입니다 -

const path = require('path'); 

module.exports = { 
    entry: './index.js', 
    output: { 
    path: path.resolve(__dirname, 'dist'), 
    filename: 'main.js', 
    libraryTarget: 'commonjs' 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules/, 
     loader: 'babel-loader', 
     options: { 
      plugins: [require('babel-plugin-transform-flow-strip-types')], 
      presets: [ 
      [ 
       'env', 
       { 
       target: { node: 6.10 }, // Node version on AWS Lambda 
       useBuiltIns: false, 
       loose: false, 
       exclude: [], 
       debug: false 
       }, 
      ], 
      ], 
     }, 
     } 
    ], 
    } 
}; 

을 그리고 여기에 컴파일 된 main.js의 조각입니다 -

/***/ (function(module, exports, __webpack_require__) { 

"use strict"; 

Object.defineProperty(exports, "__esModule", { 
    value: true 
}); 
exports.handler = handler; 

var _amazonCognitoIdentityJs = __webpack_require__(60); 

var _aws_profile = __webpack_require__(290); 

// A signin Lambda function 
function handler(event, context, callback) { 
     switch (event.httpMethod) { 
     case "GET": 

약간의 배경 .... 이것은 람다입니다. 처음에 ES6에는 쓰지 않았고 Webpack을 사용하여 번들링하지 않았고 작동했습니다. 이제 ES6에 있어야하고 Webpack에서 작업해야합니다. N.B. 이 웹팩 2

많은 덕분에 ...입니다

+0

당신이 목표의 대상이 시도 할 수 있습니다 : [ {이름 : "노드", 버전 : 6} ] 또는 – Pandelis

+0

감사 Pandelis . 나는 [{name : "node", version : 6}]로 목표를 변경하려고 시도했는데 같은 핸들러에 오류가 없습니다 .... 당신은 '또는'귀하의 의견에서 잘 랐을 다른 제안이 있었습니까? \t \t \t 옵션 '바벨 로더를': { \t \t \t \t 사전 설정 : [ \t \t \t \t 로더 : – SamBrick

+0

죄송 예 아차 나는거야 내가 일반적으로 단지 ES2015과 같이 목표로 내 바벨을 구성 할 말을했다 \t [ 'es2015'{ \t \t \t \t \t \t 모듈 : \t \t거짓\t \t}] \t \t \t \t, 을하지만 다른 문제가있는 것 같습니다 죄송합니다. – Pandelis

답변

2

내가 라이브러리 속성을 지정했다이 문제를 해결하고 commonjs2하는 libraryTarget을 변경합니다. webpack.config.js 파일 출력은 이제 다음과 같습니다 -

output: { 
    path: path.resolve(__dirname, 'dist'), 
    filename: 'main.js', 
    library: 'main', 
    libraryTarget: 'commonjs2' 
    }, 
+0

고맙습니다. 같은 문제를 해결했습니다. :) –