Webpack无法解析html-loader

时间:2015-08-12 07:10:16

标签: javascript webpack

我正在使用requirejs将项目转换为webpack,并且遇到“html-loader”加载程序出现问题。

的package.json:

"html-loader": "^0.3.0",
"webpack": "^1.11.0",
"webpack-dev-server": "^1.10.1"

应用程序/ JS / webpack.config.js:

  // folder structure:
  // root
  //   app/js
  //   bower_components/
  //   dist/
  //   node_modules/

  entry: './app/js/main.js',
  output: {
    path: 'dist/js/',
    filename: 'bundle.js',
  },
  module: {
    loaders: [
      // Note, via requirejs's "text" plugin, I included templates
      // like this: var tpl = require('text!sample.html');
      // For webpack, I went through the codebase and cleaned up
      // every instance of "text!".
      {test: /\.html$/, loader: 'html'}
    ]
  },
  resolve: {
    root: ['app/js', 'bower_components'],
    alias: {
      ...
    }
  },
  plugins: [
    new webpack.ResolverPlugin(
      new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin(
        'bower.json', ['main']
      )
    )
  ]

当我运行webpack - webpack --config app/js/webpack.config.js时 - 我收到以下错误消息:

  

app / js / some / file.js中的错误
  找不到模块:错误:无法解析app / js / some / file.js中的模块'html'

我尝试了以下操作,但没有效果:

  resolveLoader: {
    root: [path.join(__dirname, 'node_modules')],
  },

还尝试将“webpack.config.js”移动到项目根目录。这也没有帮助。

并且,甚至尝试使用“raw-loader”加载器,这也导致了相同的“无法解析模块'raw'”错误。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:3)

完全更新了这一点。

1)我本应该使用text-loader,这样我就可以每隔require('text!some/template.html');离开一次。

2)我的根路径是not absolute。根据手册,“它必须是绝对的路径!不要传递像./app/modules这样的东西。”

3)如果require看起来像require('text!some/file.html'),那么你就完成了。在webpack.config.js中定义加载器是多余的。如果这样做,您的模板最终会看起来像module.exports="module.exports=\"...\""

更新了配置:

entry: './app/js/main.js',
output: {
    path: 'dist/js/',
    filename: 'bundle.js',
},
module: {
    loaders: [/*nothing*/]
},
resolve: {
    root: [
        path.resolve('app/js'), 
        path.resolve('bower_components')
    ],
    alias: {
        ...
    }
},
plugins: [
    new webpack.ResolverPlugin(
        new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin(
            'bower.json', ['main']
        )
    )
]