2016-06-28 75 views
3

我想在服务器上使用node.js与webpack和babel-loader(es2015 +阶段0预设)使用javascript ES7语法。我已经得到了它与巴别塔节点的工作,但是当我运行的WebPack我得到async关键字以下错误(9:22是async关键字后):错误使用ES7异步/等待与节点,webpack和babel-loader

ERROR in ./src/server.js Module parse failed: C:\dev\node-async-sample\src\server.js 
Unexpected token (9:22) You may need an appropriate loader to handle this file type. 
SyntaxError: Unexpected token (9:22) 

我已经把代码放在github在https://github.com/qubitron/node-async-sample,关于如何让这个工作的任何想法?

这里是SRC/server.js的相关片段:

import express from 'express'; 
import http from 'request-promise'; 

let server = express(); 

server.get('/', async function(request, response) { 
    let result = await http('http://www.google.com'); 
    response.send(result); 
}); 

.babelrc:

{ 
    "presets": [ 
    "es2015", 
    "node5", 
    "stage-0" 
    ], 
    "plugins": [ 
    "transform-runtime" 
    ] 
} 

和webpack.config.js:

module.exports = { 
    entry: [ 
    'babel-polyfill', 
    './src/server.js' 
    ], 
    output: { 
    path: __dirname + '/dist', 
    filename: 'server_bundle.js' 
    }, 
    resolve: { 
     extensions: ['', '.js', '.jsx'] 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.jsx?$/, 
     include: __dirname + '/src', 
     loader: 'babel-loader' 
     } 
    ] 
    } 
}; 

我看到了类似的问题在这里,但它有一个不同的错误消息,并已修复巴贝尔:主: ES7 async await functions with babel-loader not working

回答

1

您的src路径不正确。你永远不应该(如从来没有 :))使用字符串连接加入PATCH有path.join

{ 
    test: /\.jsx?$/, 
    include: path.join(__dirname, 'src'), 
    loader: 'babel-loader' 
} 

BTW,这将解决问题的解析,但你还是会需要通过添加相应的扩展,以解决部分和使用json-loader

{ test: /\.json$/, loader: 'json-loader' } 

也处理.json文件加载你需要处理缺少模块警告。例如fsnet

因此,我建议您使用babel-cli来预编译服务器代码。

babel src --out-dir dist