Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack/Babel在传输之前未检测到javascript错误_Webpack_Ecmascript 6_Webpack Dev Server_Babeljs_Babel Loader - Fatal编程技术网

Webpack/Babel在传输之前未检测到javascript错误

Webpack/Babel在传输之前未检测到javascript错误,webpack,ecmascript-6,webpack-dev-server,babeljs,babel-loader,Webpack,Ecmascript 6,Webpack Dev Server,Babeljs,Babel Loader,我已经为一个新的React项目配置了webpack开发服务器。我正在使用babel loader来传输ES6代码。在以前的项目中,我们能够在传输之前检测javascript代码中的明显错误,例如缺少导入语句或未定义的变量 为什么webpack/babel loader没有检测到明显的错误?我如何配置babel loader以不传输这些错误,而是记录到命令提示符 这是我的package.json { "name": "advent-calendar", "version": "1.0.0"

我已经为一个新的React项目配置了webpack开发服务器。我正在使用babel loader来传输ES6代码。在以前的项目中,我们能够在传输之前检测javascript代码中的明显错误,例如缺少导入语句或未定义的变量

为什么webpack/babel loader没有检测到明显的错误?我如何配置babel loader以不传输这些错误,而是记录到命令提示符

这是我的package.json

{
  "name": "advent-calendar",
  "version": "1.0.0",
  "description": "",
  "main": "src/entry.js",
  "scripts": {
    "dev": "webpack-dev-server --config config/webpack.config.dev.js",
    "build:webpack": "cross-env NODE_ENV=production && webpack --config config/webpack.config.prod.js",
    "build": "npm run build:webpack --verbose --color",
    "test": "cross-env NODE_ENV=development ./node_modules/.bin/mocha --opts mocha.opts",
    "test:watch": "npm run test -- --watch",
    "lint": "npm run -s lint:css:raw ; npm run -s lint:js:raw",
    "lint:css": "npm run -s lint:css:raw",
    "lint:css:raw": "stylelint \"src/**/*.{css,less,scss}\"",
    "lint:js": "npm run -s lint:js:raw",
    "lint:js:raw": "eslint  \"src/**/*.js\"",
    "lint:js:raw:fix": "./node_modules/.bin/eslint --fix \"src/**/*.js\"",
    "lint:js:watch": "esw \"src/**/*.js\" --watchyar",
    "lint:watch": "npm run lint:js:watch"
  },
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-eslint": "^8.0.2",
    "babel-loader": "^7.1.2",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-es2017": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-1": "^6.24.1",
    "chai": "^4.1.2",
    "chai-enzyme": "^0.8.0",
    "cross-env": "^5.1.1",
    "css-loader": "^0.28.7",
    "enzyme": "^3.1.1",
    "enzyme-adapter-react-16": "^1.0.4",
    "eslint": "^4.10.0",
    "eslint-loader": "^1.9.0",
    "eslint-plugin-chai-friendly": "^0.4.0",
    "eslint-plugin-eslint-comments": "^2.0.1",
    "eslint-plugin-import": "^2.8.0",
    "eslint-plugin-jsx-a11y": "^6.0.2",
    "eslint-plugin-react": "^7.4.0",
    "file-loader": "^1.1.5",
    "html-webpack-plugin": "^2.30.1",
    "jsdom": "^9.9.1",
    "less": "^2.7.3",
    "less-loader": "^4.0.5",
    "mocha": "^4.0.1",
    "node-sass": "^4.6.0",
    "nyc": "~9.0.1",
    "path": "^0.12.7",
    "prop-types": "^15.6.0",
    "sass-loader": "^6.0.6",
    "simple-jsdom": "^3.0.0",
    "sinon": "^4.1.2",
    "sinon-chai": "^2.14.0",
    "style-loader": "^0.19.0",
    "stylelint": "^8.2.0",
    "webpack": "^3.8.1",
    "webpack-dev-server": "^2.9.4"
  },
  "dependencies": {
    "classnames": "^2.2.5",
    "crypto-js": "^3.1.9-1",
    "css-reset": "^0.0.1",
    "react": "^16.0.0",
    "react-dom": "^16.0.0",
    "react-redux": "^5.0.6",
    "react-transition-group": "^2.2.1",
    "redux": "^3.7.2",
    "redux-devtools-extension": "^2.13.2",
    "redux-saga": "^0.16.0"
  }
}
这是我的宝贝

{
   "presets": [
      "es2015", 
      "react", 
      "stage-1"
   ]
}
我的javascript文件加载程序是

{
   test: /\.$|\.js$|\.jsx$/,
   exclude: /node_modules\/[^@]/,
   use: [{
     loader: 'babel-loader',
   }],
}
我如何配置babel loader以不传输这些错误,而是记录到命令提示符

Webpack dev server
具有足够的错误日志配置,可以在声明模式下提供

只需使用以下脚本(分别命名为
run-dev.js
和patch
package.json
)即可启动客户端部件:

import webpack from 'webpack';
import WebpackDevServer from 'webpack-dev-server';

import config from './webpack.dev.config';

const outputConfig = {
    colors: true,
    hash: false,
    version: false,
    timings: false,
    assets: false,
    chunks: false,
    modules: false,
    reasons: false,
    children: false,
    source: false,
    errors: true,
    errorDetails: true,
    warnings: true,
    publicPath: false
};

const clientCompiler = webpack(config);

const clientDevServer = new WebpackDevServer(clientCompiler, {
    stats: outputConfig
});

clientDevServer.listen(3000, '127.0.0.1');
然后,您可以根据需求和输出的详细程度自定义
outputConfig
对象。不要忘记打开
errors
errorDetails
选项,它们将指示有编译错误的块和源代码行


阅读此处关于
outputConfig
配置的模式,包括错误输出的过滤器模式,可用于排除控制台中的冗余日志记录。

您指的是什么类型的错误?你没有付出太多去继续。你以前具体看到了什么,现在没有看到?这也将有助于了解你正在使用的网页版本,并有你的整个配置。谢谢你的答复。例如,变量中的输入错误不会被拾取,并且如果存在,也不会检查导入。我还编辑了我的答案并添加了整个package.json。对于导入,可能您在其他配置中使用了
[“es2015”,{modules:false}],
,以便Webpack本身处理模块?也可能是您所说的通常会看到的错误来自ESLint,这将是一个完整的单独配置。Webpack/Babel不检查一般的打字错误,但如果Webpack正在处理模块,它可能会告诉您它们是否存在?谢谢您的回答,我已经创建了文件,但我无法执行脚本。如何通过package.json执行它?@trevorgk Replace在package.json行
“dev”:“webpack dev server--config config/webpack.config.dev.js”
“dev”:“babel node run-dev.js”
,别忘了
npm安装--保存dev babel cli