【问题标题】:webpack : You may need an appropriate loader to handle this file typewebpack:你可能需要一个合适的加载器来处理这个文件类型
【发布时间】:2016-09-28 23:21:33
【问题描述】:

我是第一次使用 webpack,对 webpack 不是很了解。我正在使用 angular - ES6 - bable,我正在尝试使用 webpack-angular-translate。

我遇到以下错误:

./~/html-webpack-plugin/lib/loader.js!./src/index.html 中的错误 模块解析失败:/Users/samirshah/Desktop/nuskin_translate/node_modules/html-webpack-plugin/lib/loader.js!/Users/samirshah/Desktop/nuskin_translate/node_modules/webpack-angular-translate/dist/html/html- loader.js!/Users/samirshah/Desktop/nuskin_translate/src/index.html 意外令牌 (1:0)

您可能需要适当的加载程序来处理此文件类型。

我正在尝试在模块中设置预加载器。当我尝试设置 html 的预加载器时,我遇到了上述错误。

preLoaders: [
    {
        test: /\.html$/,
        loader: WebPackAngularTranslate.htmlLoader()
    }
],

WebPackAngularTranslate.jsLoader() 工作正常。我不确定为什么 WebPackAngularTranslate.htmlLoader() 会抛出错误。

任何人都遇到过类似的问题。请在这里帮助我。

提前致谢。

这是我的配置文件:

var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var CopyWebpackPlugin = require('copy-webpack-plugin');
var CleanWebpackPlugin = require('clean-webpack-plugin');
var WebPackAngularTranslate = require("webpack-angular-translate");

module.exports = {
  debug: true,
  entry: {
  vendor: ["jquery", "angular"],
  bundle: ['babel-polyfill', './src/app.js'],
},
// entry: ['babel-polyfill', './src/app.js'],
 output: {
    path: path.join(__dirname, 'public'),
    filename: '[name].js'
  },
  devServer: {
    // This is required for webpack-dev-server. The path should  
    // be an absolute path to your build destination. 
    outputPath: path.join(__dirname, 'public')
  },
  plugins: [
    new HtmlWebpackPlugin({
      title: 'Website Starter',
      template: 'src/index.html',
      minify: {
        collapseWhitespace: true,
        removeComments: true,
        removeRedundantAttributes: true,
        removeScriptTypeAttributes: true,
        removeStyleLinkTypeAttributes: true
      }
    }),
    new WebPackAngularTranslate.Plugin(),
    new ExtractTextPlugin("main.css"),
    new webpack.optimize.CommonsChunkPlugin({
      name: "vendor",
      minChunks: 2
    }),
    // new webpack.optimize.UglifyJsPlugin({
    //   sourceMap: true,
    //   mangle: false,

    // }),
    new CopyWebpackPlugin([{ from: 'src/**/*.js', to: __dirname +     '/public' }]),
new CleanWebpackPlugin(['public'], {
  root: path.resolve(__dirname),
  verbose: true,
  dry: true
})],
  module: {
    preLoaders: [
        {
            test: /\.html$/,
            loader: WebPackAngularTranslate.htmlLoader()
        }],
    loaders: [
      {
                test: /\.js$/,
                loader: WebPackAngularTranslate.jsLoader()
        },
      {
        test: /\.js$/, loader: 'babel-loader', query: {
          // https://github.com/babel/babel-loader#options
          cacheDirectory: true,
          presets: ['es2015', 'stage-2']
        }, exclude: [/node_modules/, /\.spec.js$/, /\npm\.js$/]
      },
      { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },
      { test: /\.scss$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!sass-loader") },
      { test: /\.html$/, loader: 'file-loader?name=[path]/[name].[ext]', exclude: /index\.html$/ },
      { test: /\.jade$/, loader: 'file-loader?name=[path]/[name].html!jade-html?pretty=true' },
      // inline base64 URLs for <=8k images, direct URLs for the rest
      { test: /\.(png|jpg)$/, loader: 'file-loader?name=assets/images/[name].[ext]' },
      // helps to load bootstrap's css.
      {
        test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
        loader: 'file-loader?name=assets/fonts/[name].[ext]'
      },
      {
        test: /\.woff2$/,
        loader: 'file-loader?name=assets/fonts/[name].[ext]'
      },
      {
        test: /\.otf$/,
        loader: 'file-loader?name=assets/fonts/[name].[ext]'
      },
      {
        test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
        loader: 'file-loader?name=assets/fonts/[name].[ext]'
      },
      {
        test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
        loader: 'file-loader?name=assets/fonts/[name].[ext]'
      },
      {
        test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
        loader: 'file-loader?name=assets/images/[name].[ext]'
      }
    ]
  },

  devtool: 'source-map'
};

【问题讨论】:

  • 我会说只是仔细检查以确保您 npm 安装了加载程序。此外,根据文档,您可能必须提供文件名作为 js 加载程序的参数。

标签: webpack angular-translate html-webpack-plugin


【解决方案1】:

似乎 index.html 也被 webpack 加载,但它被排除在 html 加载器配置之外。您要么必须包含(或不明确排除它),要么不使用 webpack 处理它...

【讨论】:

    【解决方案2】:

    你需要确保你的加载器不能匹配src/index.html

    这应该可行:

       {
            test: /\.html$/,
            loader: WebPackAngularTranslate.htmlLoader(),
            exclude: /src\/index\.html$/
        }
    

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 2017-06-20
      • 2018-11-22
      • 2017-10-21
      • 2018-05-03
      • 2017-12-15
      • 1970-01-01
      • 2019-05-10
      • 2021-12-07
      相关资源
      最近更新 更多