jshint-loader 与 webpack 4 版本不兼容

5

我将尝试并学习webpack及其基础知识,版本为4。在使用加载器和配置时遇到了一些问题。

webpack的配置如下:

module.exports = {
  entry: ['./app.js', './util.js'],
  output: {
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.es6$/,
        exclude: /node_modules/,
        use: 'babel-loader'
      },
      {
        enforce: 'pre',
        test: /\.js$/,
        exclude: /node_modules/,
        use: 'jshint-loader'
      }
    ]
  },
  resolve: {
    extensions: ['.js', '.es6']
  }
}

在使用 webpack-dev-server 时,出现了以下错误:
ERROR in ./app.js
Module build failed: TypeError: Cannot read property 'jshint' of undefined
at Object.jsHint (/home/sagar/Documents/mine/gitrepo/webpack_illustration/node_modules/jshint-loader/index.js:63:17)
at Object.<anonymous> (/home/sagar/Documents/mine/gitrepo/webpack_illustration/node_modules/jshint-loader/index.js:149:11)
at /home/sagar/Documents/mine/gitrepo/webpack_illustration/node_modules/jshint-loader/index.js:55:5
at tryToString (fs.js:513:3)
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:501:12)
@ multi (webpack)-dev-server/client?http://localhost:8080 ./app.js ./util.js

1
在 Github 上开一个 issue。Webpack 4 对插件做了相当大的改动。 - lukas-reineke
1个回答

8

Webpack 4 移除了 loader 上下文中的 this.options,jshint-loader 已经通过删除代码解决了这个问题。但是目前在 npm registry 中还没有内置的构建版本。你可以从 GitHub 上获取最新的 jshint-loader,并使用 'npm link' 进行链接。

或者你也可以前往 node_modules,找到 jshint-loader,并对代码进行修改。

function jsHint(input, options) {
    // copy options to own object
    if(this.options.jshint) {
        for(var name in this.options.jshint) {
            options[name] = this.options.jshint[name];
        }
    }

to

function jsHint(input, options) {
    // copy options to own object
    if(this.options && this.options.jshint) {
        for(var name in this.options.jshint) {
            options[name] = this.options.jshint[name];
        }
    }

请参考以下链接: https://medium.com/webpack/webpack-4-migration-guide-for-plugins-loaders-20a79b927202。另外,在https://github.com/webpack-contrib/jshint-loader/blob/master/lib/index.js的第11行修复了一个GitHub错误。

看起来有一个拉取请求来修复它,但由于某些原因他们不会更新NPM包。 - Kieran
在他们解决之前,我会看一下eslint - eslint-loader webpack 4 --祝好运 - Kieran
请点击链接到Github修复上述问题。目前他们正在注释掉两个代码块。我也这样做了,它起作用了。 - kjonach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接