升级到 Webpack 3 时文件加载器出现语法错误

Syntax error with file-loader when upgrading to Webpack 3

我正在从 Webpack 2 升级到 3,我 运行 遇到了 file-loader@1.0.0-beta.1 的问题。这是我收到的错误:

You may need an appropriate loader to handle this file type.
| export default = __webpack_public_path__ + "foo.css"

(为简洁起见省略了完整的错误详细信息。这是相关部分。)

这是 Webpack 配置:

module: {
  rules: [{
    test: /\.scss$/,
    use: [{
      loader: 'file-loader',
      options: {
        name: '[name].css'
      }
    },
    'extract-loader',
    'css-loader',
    'sass-loader'
    fallback: 'style-loader/url'
  }
}

之前我用的是0.9.0,没有报错。查看这两个版本之间的区别,我看到 0.9.0 returns 一个使用 CJS 格式而不是 Harmony 的字符串。

0.9.0

return "module.exports = " + publicPath + ";";

1.0.0-beta.1

return `export default = ${publicPath};`;

我尝试将 babel-loader 放在 file-loader 之后,但这并没有解决问题。我可以使用 0.9.0 并且一切正常,但我不想被困在那个版本。

这是 file-loader 测试版中的错误。默认导出的正确语法是(= 在默认导出中无效):

export default "/public/path/to/file";

此错误已修复,将在下一个(测试版)版本中修复。现在,您应该使用稳定版。目前,最新版本是 0.11.2.