Dan*_*lor 5 javascript babel node.js webpack ecmascript-7
我试图使用JavaScript语法ES7采用具有的WebPack和巴贝尔装载机(ES2015 + 0级的预置)的node.js服务器上.我已经让它与babel-node一起工作但是当我运行webpack时,我在async关键字上得到以下错误(9:22在async关键字之后):
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)
Run Code Online (Sandbox Code Playgroud)
我把代码放在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);
});
Run Code Online (Sandbox Code Playgroud)
.babelrc:
{
"presets": [
"es2015",
"node5",
"stage-0"
],
"plugins": [
"transform-runtime"
]
}
Run Code Online (Sandbox Code Playgroud)
和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'
}
]
}
};
Run Code Online (Sandbox Code Playgroud)
我看到了一个类似的问题在这里,但它有一个不同的错误信息,并固定在巴别塔:主: ES7异步等待功能与巴贝尔装载机不工作
您的 src 路径不正确。您永远不应该(就像从不:))使用字符串连接来连接路径path.join。
{
test: /\.jsx?$/,
include: path.join(__dirname, 'src'),
loader: 'babel-loader'
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这将解决解析问题,但您仍然需要.json通过添加相应的扩展名来解析部分并使用来处理文件加载json-loader
{ test: /\.json$/, loader: 'json-loader' }
Run Code Online (Sandbox Code Playgroud)
此外,您还需要处理丢失模块警告。例如fs和net。
所以我建议您使用babel-cli预编译服务器代码。
babel src --out-dir dist
Run Code Online (Sandbox Code Playgroud)