Skip to content
This repository was archived by the owner on Jun 25, 2020. It is now read-only.
This repository was archived by the owner on Jun 25, 2020. It is now read-only.

Loading JSON files with bundle-loader crashes #74

Open

Description

@ephys

Hello,

I'm not sure what I'm doing wrong but for some reason, if I try to lazily load JSON files using this loader, webpack interprets the generated loading code as if it were JSON too and tries to parse it.

This happens using Webpack 4.1.1

I assume it's because the name of the resource bundle-loader generates ends with .json too. (eg. ./node_modules/bundle-loader?lazy&name=file-[name]!./json-files/a.json)

I reproduced the issue using only bundle-loader and a couple of JSON files here: http://github.com/Ephys/bundle-loader-bug

Here is the webpack log of the above project: https://github.com/Ephys/bundle-loader-bug/blob/master/stacktrace.log

Thank you in advance for your help! :)

Activity

  1. ephys commented on Mar 14, 2018

    @ephys
    Author

    If anyone else is encountering the same bug, my current workaround is to go back to using to json-loader:

    module: {
      rules: [{
        test: /\.json$/i,
        type: 'javascript/auto',
        loader: 'json-loader',
      }],
    },

    Sadly I haven't found a way to do that for bundle-loader-loaded JSON files only (resourceQuery can be used but you'd need to flag every use of bundle-loader in your codebase)

  2. rmja commented on Apr 13, 2018

    @rmja

    I think this is related to webpack/webpack#6572, as applying webpack/webpack#6572 (comment) fixes the issue.

  3. rmja commented on Jul 3, 2018

    @rmja

    Adding the following code snippet just before return result.join(""); resolves the issue but it is not nice. I don't know how to property get the generator and parser instance:

    if (this._module.type !== "javascript/auto") {
    		this._module.type = "javascript/auto";
    		for (var i = 0, ii = this._compilation.modules.length; i < ii; i++) {
    			if (this._compilation.modules[i].type === "javascript/auto") {
    				this._module.generator = this._compilation.modules[i].generator;
    				this._module.parser = this._compilation.modules[i].parser;
    				break;
    			}
    		}
    	}
    

    Is there a better api to get the instance other then searching in the other modules?

  4. added 2 commits that reference this issue on Jul 4, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions