带有 Babel 的 webpack 无法正常工作

webpack with Babel not working

I 运行 在 Windows 命令提示符下:npm start

并得到:

JavaScript-ES6@1.0.0 start C:\Dans\Courses\JavaScript-ES6 webpack-dev-server

×「wds」:无效的配置对象。 Webpack 已使用与 API 架构不匹配的配置对象进行了初始化。 - configuration.module 有一个未知的 属性 'loaders'。这些属性是有效的: object { exprContextCritical?,exprContextRecursive? strictThisContextOnImports? } -> 影响普通模块的选项 (NormalModuleFactory).

npm 错误! Windows_NT10.0.17134 错误! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "start" 错误!节点 v6.10.0 错误! npm v3.10.10 错误!代码生命周期 错误! JavaScript-ES6@1.0.0 开始:webpack-dev-server 错误!退出状态 1 错误! 错误!在 JavaScript-ES6@1.0.0 启动脚本 'webpack-dev-server' 处失败。 错误!确保安装了最新版本的 node.js 和 npm。 错误!如果你这样做,这很可能是 JavaScript-ES6 包的问题, 错误!不是 npm 本身。 错误!告诉作者这在你的系统上失败了: 错误! webpack-开发服务器 错误!您可以通过以下方式获取有关如何为该项目打开问题的信息: 错误! npm 错误 JavaScript-ES6 错误!或者,如果这不可用,您可以通过以下方式获取他们的信息: 错误! npm 所有者 ls JavaScript-ES6 错误!上面可能还有其他日志记录输出。


我的webpack.config.js文件内容:

const path = require('path');

   module.exports = {
   entry: ['./app/index.js'],
   output: {
       path: path.resolve(__dirname, 'build'),
       filename: 'bundle.js'
   },
   module: {
       loaders: [
         {  
           loader: 'babel-loader',
           test: /\.js$/,
           exclude: /node_modules/
         }
        ]
   },
     devServer: {
        port: 3000,
        contentBase: './build',
        inline: true
    }
}

我的package.json文件内容:

{
  "name": "JavaScript-ES6",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
  "build": "webpack",
  "start": "webpack-dev-server"
 },
   "babel": {
   "presets": ["es2015"]
    },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-polyfill": "^6.26.0",
    "babel-preset-es2015": "^6.24.1",
    "webpack": "^4.8.3",
    "webpack-cli": "^2.1.4",
    "webpack-dev-server": "^3.1.4"
  }
}

您的 webpack 配置有一处错误。
在模块内部,关键字需要是 rules 而不是 loaders.

const path = require('path');

module.exports = {
   entry: ['./app/index.js'],
   output: {
       path: path.resolve(__dirname, 'build'),
       filename: 'bundle.js'
   },
   module: {
       rules: [ //here
         {  
           loader: 'babel-loader',
           test: /\.js$/,
           exclude: /node_modules/
         }
        ]
   },
     devServer: {
        port: 3000,
        contentBase: './build',
        inline: true
    }
}