【问题标题】:webpack fails to parse json even with json loader即使使用 json loader,webpack 也无法解析 json
【发布时间】:2016-08-13 19:19:37
【问题描述】:

我正在尝试为我的 reactjs 应用程序的状态加载 JSON 文件,但 webpack 不断抛出此错误:

ERROR in ./src/data/questions.json
Module parse failed: C:\Users\[...]\myApp\src\data\questions.json
Unexpected token (2:9)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (2:9)
...

JSON 文件是有效的,我用的是 webpack 的 json-loader,所以不确定是什么问题。

这是我的webpack.config.json 文件:

module.exports = {
  entry: __dirname + '/src/index.js',
  output: {
    filename: 'bundle.js',
    path: __dirname + '/dist/js'
  },
  cache: true,
  debug: true,
  devtool: 'source-map',
  module: {
    loaders: [{
      test: /\.jsx?$/,
      exclude: /(node_modules|\.c9)/,
      loader: 'babel',
      query: {
        presets: ['react', 'es2015', 'stage-0']
      }
    }, {
      test: /\.json$/,
      loader: 'json-loader'
    }]
  }
};

这就是我导入 JSON 文件的方式:

const quizes = [
  require('./data/questions.json')
];

如果我将上面的行更改为:

const quizes = [
  require('json!./data/questions.json')
];

我得到一个不同的错误:

ERROR in ./~/json-loader!./src/data/questions.json
Module build failed: SyntaxError: Unexpected token m
    at Object.parse (native)
    at Object.module.exports (C:\Users\[...]\myApp\node_modules\json-loader\index.js:7:48)

更奇怪的是,使用上述方法(json! 前缀),立即抛出错误(在初始构建期间)。但是,如果我只是将它留在 webpack 配置加载器中,则初始构建完成时不会出错,但后续构建会抛出错误。

尽管如此,我的应用大部分时间仍然可以运行。这是怎么回事?

【问题讨论】:

    标签: webpack


    【解决方案1】:

    较早的问题,但您已经指定了两次加载程序:一次是在 webpack.config.js 中,另一次是在您的 require 中。使用其中一个,这应该可以消除错误。

    【讨论】:

    • Harrigton 能否解释一下上述解决方案。它对我有用。但我想知道如果您在 webpack 配置中指定加载程序,那么您如何访问文件中的 json
    • 我应该在文件中写什么来导入它?
    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2012-08-18
    • 2022-09-29
    • 2020-12-02
    相关资源
    最近更新 更多