2017-04-13 5 views
-1

async/javascript 구문을 사용하여 node.js 응용 프로그램을 빌드하려면 webpack 2.3.3을 사용하고 있습니다. Transpiling은 babel-loader 6.4.1을 사용하여 수행됩니다. 내 package.json은 다음과 같습니다자바 스크립트 async/webpack 2 및 babel-loader로 대기

'use strict'; 

require('babel-polyfill'); 
var webpack = require('webpack'); 
var path = require('path'); 
var fs = require('fs'); 

var nodeModules = {}; 

fs.readdirSync('node_modules') 
    .filter(function(x) { 
     return ['.bin'].indexOf(x) === -1; 
    }) 
    .forEach(function(mod) { 
     nodeModules[mod] = 'commonjs ' + mod; 
    }); 

var serverConfig = { 
    entry: ['babel-polyfill', './src/server'], 
    target: 'node', 
    externals: nodeModules, 
    output: { 
     path: path.resolve(__dirname, '../dist/assets/'), 
     filename: 'server.js' 
    }, 
    plugins: [ 
     new webpack.optimize.UglifyJsPlugin({ 
      compress: { warnings: false } 
     }) 
    ], 
    resolve: { 
     extensions: ['.js', '.jsx'] 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.jsx?$/, 
       loaders: ['babel-loader?presets[]=es2015&presets[]=stage-0&presets[]=react&plugins[]=transform-async-to-generator', 'eslint-loader'], 
       exclude: /node_modules/ 
      } 
     ] 
    } 
}; 

module.exports = [ clientConfig, serverConfig ]; 

내가 npm run build 실행, 빌드가 오류와 함께 async function foo(arg) { (...) }를 포함하는 라인에 실패

{ (...) 
    "scripts": { 
    "build": "rm -Rf dist; webpack -p --progress --colors --display-error-details --config webpack/prod.js", 
    "postinstall": "npm run build", 
    "start": "node dist/assets/server.js" 
    }, 
    (...) 
    "dependencies": { 
    "babel-cli": "6.24.1", 
    "babel-core": "6.24.1", 
    "babel-loader": "6.4.1", 
    "babel-plugin-transform-async-to-generator": "6.24.1", 
    "babel-polyfill": "6.23.0", 
    "babel-preset-es2015": "6.24.1", 
    "babel-preset-react": "6.24.1", 
    "babel-preset-stage-0": "6.24.1", 
    "babel-preset-stage-1": "6.24.1", 
    "eslint": "3.19.0", 
    "eslint-loader": "1.7.1", 
    "eslint-plugin-react": "6.10.3", 
    (...) 
    "webpack": "2.3.3" 
    }, 
    (...) 
} 

내 웹팩 설정은 설정 파일 webpack/prod.js에 라인 loaders: ['babel-loader?presets[]=es2015&presets[]=stage-0&presets[]=react&plugins[]=transform-async-to-generator', 'eslint-loader']으로 transform-async-to-generator 플러그인을 사용하여 Parsing error: Unexpected token function.

async/await 코드 부분을 제거하면 빌드가 성공합니다.

해결책 here과을 보았지만 작동하도록 async/await 코드 빌드를 가져올 수 없습니다.

아무도 도와 줄 수 있습니까? Thx a 많음

답변

2

eslint-loader의 구문 분석 오류는 기본 eslint 파서가 asyncawait을 인식하지 못하기 때문에 발생합니다. Specifying Parser에 설명 된대로 babel-eslint을 사용해야합니다. 당신의 eslint의 설정에서 추가

"parser": "babel-eslint" 

babel-eslint를 설치

npm install --save-dev babel-eslint 
+0

덕분에,이 문제를 해결합니다. 나는 당신의 답을 upvoted했지만 이후로 나는 멍청이다. – MDH