我正在构建一个节点应用程序,我正在使用webpack来处理我的客户端脚本。我正在使用webpack节点api和我的app bootstrap文件,我只是这样做:
const webpack = require('webpack')
const webpackConfig = require('./webpack.config.js')
webpack(webpackConfig, (err, stats) => {
if (err || stats.hasErrors()) {
//do something with that
}
})
这很有效,直到我尝试使用ES6语法编写。虽然我已经在我的webpack.config.js
中定义了babel应该用于预处理文件但它根本不起作用。它表示存在语法错误。
这是我的webpack.config.js
module.exports = {
context: __dirname,
entry: "./resources/assets/js/main.js",
output: {
path: __dirname + "/build",
filename: "bundle.js"
},
module: {
rules: [
{
test: /\.js$/,
use : {
loader: "babel-loader",
options: {
presets: [
"es2015",
"es2016",
"stage-2"
]
}
}
}
]
}
}
这是我的package.json
{
"name": "topo",
"version": "1.0.0",
"description": "Node app test",
"main": "index.js",
"dependencies": {
"nodemon": "^1.11.0"
},
"devDependencies": {
"babel-core": "^6.24.1",
"babel-loader": "^6.4.1",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2016": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"pug": "^2.0.0-beta11",
"webpack": "^2.3.3"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "António Quadrado",
"license": "ISC"
}
我发现了关于webpack和ES6与babel的多个问题,我试图用这些情况给出的解决方案解决但我没能使它工作,这就是我发布我的具体案例的原因,希望有人可以指出我的错误。
我不只是在寻找这个特定问题的解决方案,而且还要了解webpack及其预加载器的工作方式,以便将来可以避免这种情况。
我正在使用node v7.8.0
谢谢。
答案 0 :(得分:1)
use
期望一组加载器用于特定规则。由于规则中只有一个加载器,因此您应该将所有加载器属性直接放在该规则中(完全删除use
):
rules: [
{
test: /\.js$/,
loader: "babel-loader",
options: {
presets: [
"es2015",
"es2016",
"stage-2"
]
}
}
]
如果你必须使用use
,它将会是这样的:
rules: [
{
test: /\.js$/,
use: [
{
loader: "babel-loader",
options: {
presets: [
"es2015",
"es2016",
"stage-2"
]
}
}
]
}
]