web-dev-qa-db-ja.com

webpack3 jshint-loaderが機能しません

私はこの指示 https://webpack.js.org/loaders/jshint-loader/ に従ってエラーを取得しようとしています:

私の設定ファイル:

const path = require('path');

    module.exports = {
      entry: {
        app: './index.js'
      },
      output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
      },

      module: {
        rules: [
          {
            test: /\.js$/, // include .js files
            enforce: "pre", // preload the jshint loader
            exclude: /node_modules/, // exclude any and all files in the node_modules folder
            use: [
              {
                loader: "jshint-loader"
              }
            ]
          }
        ]
      },

      // more options in the optional jshint object
      jshint: {
        // any jshint option http://www.jshint.com/docs/options/
        // i. e.
        camelcase: true,

        // jshint errors are displayed by default as warnings
        // set emitErrors to true to display them as errors
        emitErrors: false,

         // jshint to not interrupt the compilation
         // if you want any file with jshint errors to fail
         // set failOnHint to true
         failOnHint: false,

         // custom reporter function
         reporter: function(errors) { }
       }
    };

エラーテキスト:

無効な構成オブジェクト。 Webpackは、APIスキーマと一致しない構成オブジェクトを使用して初期化されています。 -構成に不明なプロパティ「jshint」があります。これらのプロパティは有効です:object {amd?、bail?、cache?、context?、dependencies?、devServer?、devtool?、entry、externals?、loader?、module?、name?、node?、output?、performance? 、プラグイン?、プロファイル?、recordsInputPath?、recordsOutputPath?、recordsPath?、resolve?、resolveLoader?、stats?、target?、watch?、watchOptions? }タイプミスの場合:修正してください。ローダーオプションの場合:webpack 2では、構成でカスタムプロパティが許可されなくなりました。

9
V. Zorin

彼らのウェブサイトの指示は、実際には機能していないため、古くなっているようです。これについては Github で未解決の問題があります。

この設定は機能するはずです:

const path = require('path');

module.exports = {
  entry: {
    app: './index.js'
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },

  module: {
    rules: [{
      test: /\.js$/, // include .js files
      enforce: "pre", // preload the jshint loader
      exclude: /node_modules/, // exclude any and all files in the node_modules folder
      use: [{
        loader: "jshint-loader",
        // more options in the optional jshint object
        options: {  // ⬅ formally jshint property
          camelcase: true,
          emitErrors: false,
          failOnHint: false
        }
      }]
    }]
  },
};
38
Tom Van Rompaey

私のために働いた唯一のことは、jshint-loaderのファイルを手動で変更することでした。

  1. [プロジェクトパス] /node_modules/jshint-loader/index.jsに移動します。
  2. 関数「jsHint」(行61)を探し、行63に進みます。
  3. 「if(this.options.jshint)」を「if(options.jshint)」に変更します。
  4. 変更後、関数は次のようになります。

     
     function jsHint(input、options){
     //所有するオブジェクトにオプションをコピーします
     if(options.jshint){
     for(var this.options.jshintの名前){
     options [name] = this.options.jshint [name]; 
    } 
    } 
     //関数がオンになります... 
    } 
     
    
0
Gabriel Ullmann