Webpack: 使用jade-loader时模块构建失败

3

这可能是配置问题,但我对Webpack还不熟悉,在几天内也没能解决它。我需要一些帮助!

  • webpack 1.9.8
  • jade-loader 0.7.1
  • jade 1.9.2

webpack.config.js

var webpack = require('webpack');
var path = require('path');

module.exports = {
  // ...
  resolve: {
    extensions: ["", ".webpack.js", ".web.js", ".json", ".js", ".jade" ],
    root: [ path.join(__dirname, 'src/js'), path.join(__dirname, 'node_modules') ],
    modulesDirectories: ['node_modules'],
  },
  module: {
    loaders: [
      { test: /\.json$/, loader: "json-loader" },
      { test: /modernizr/, loader: "imports?this=>window!exports?window.Modernizr" },
      { text: /\.jade$/, loader: "jade-loader" }
    ]
  }
  // ...
};

当我尝试运行webpack时,由于完全为空的入口文件,我会收到以下错误提示。

ERROR in ./~/jade/lib/runtime.js
Module build failed: Error: unexpected token "indent"
    at MyParser.Parser.parseExpr (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:252:15)
    at MyParser.Parser.parse (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:122:25)
    at parse (/Users/name/project/code/assets/node_modules/jade/lib/index.js:104:21)
    at Object.exports.compileClientWithDependenciesTracked (/Users/name/project/code/assets/node_modules/jade/lib/index.js:256:16)
    at Object.exports.compileClient (/Users/name/project/code/assets/node_modules/jade/lib/index.js:289:18)
    at run (/Users/name/project/code/assets/node_modules/jade-loader/index.js:170:24)
    at Object.module.exports (/Users/name/project/code/assets/node_modules/jade-loader/index.js:167:2)
 @ ./entry.js 1:11-85

如果我在entry.js中实际需要引用一个jade文件,我会得到不同的错误:
ERROR in ./entry.js
Module build failed: Error: unexpected text ;
var
    at Object.Lexer.fail (/Users/name/project/code/assets/node_modules/jade/lib/lexer.js:871:11)
    at Object.Lexer.next (/Users/name/project/code/assets/node_modules/jade/lib/lexer.js:930:15)
    at Object.Lexer.lookahead (/Users/name/project/code/assets/node_modules/jade/lib/lexer.js:113:46)
    at MyParser.Parser.lookahead (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:102:23)
    at MyParser.Parser.peek (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:79:17)
    at MyParser.Parser.tag (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:752:22)
    at MyParser.Parser.parseTag (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:738:17)
    at MyParser.Parser.parseExpr (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:211:21)
    at MyParser.Parser.parse (/Users/name/project/code/assets/node_modules/jade/lib/parser.js:122:25)
    at parse (/Users/name/project/code/assets/node_modules/jade/lib/index.js:104:21)

然而,如果我在webpack.config.js中注释掉jade loader的行,并使用内联语法require('jade!template.jade')引用jade文件,一切都正常工作。你有什么想法?
1个回答

2
你的webpack配置存在一个错别字。
  { text: /\.jade$/, loader: "jade-loader" }

应该是

  { test: /\.jade$/, loader: "jade-loader" }
      ^ x -> s

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