webpack-contrib / imports-loader

Imports Loader
MIT License
520 stars 63 forks source link

TypeError: element.loader.split is not a function #18

Closed wzup closed 8 years ago

wzup commented 8 years ago

This throws an error:

        }, {
            test: require.resolve("jquery"),
            loader: ["imports?$=jquery,jQuery=jquery"]
        }],

This error:

$ webpack --config webpack.development.config.js -cd --progress --watch
 20% 1/6 build modulesc:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:58
        if(element.loader) return element.loader.split("!");
                                                 ^

TypeError: element.loader.split is not a function
    at getLoadersFromObject (c:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:58:43)
    at LoadersList.<anonymous> (c:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:78:12)
    at Array.map (native)
    at LoadersList.match (c:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:70:19)
    at c:\Users\user\app\node_modules\webpack\lib\NormalModuleFactory.js:111:68
    at c:\Users\user\app\node_modules\async\lib\async.js:726:13
    at c:\Users\user\app\node_modules\async\lib\async.js:52:16
    at done (c:\Users\user\app\node_modules\async\lib\async.js:246:17)
    at c:\Users\user\app\node_modules\async\lib\async.js:44:16
    at c:\Users\user\app\node_modules\async\lib\async.js:723:17
    at c:\Users\user\app\node_modules\async\lib\async.js:167:37
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\UnsafeCachePlugin.js:29:4
    at onResolved (c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:39:10)
    at innerCallback (c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:89:22)
    at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19)
    at c:\Users\user\app\node_modules\tapable\lib\Tapable.js:134:6
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\ModulesInDirectoriesPlugin.js:55:11
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:191:15
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\ModulesInDirectoriesPlugin.js:46:14
    at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19)
    at c:\Users\user\app\node_modules\tapable\lib\Tapable.js:134:6
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:123:21
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:191:15
    at applyPluginsParallelBailResult.createInnerCallback.log (c:\Users\user\app\node_modules\enhanced-resolve\lib\Resol
s:104:30)
    at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19)
    at c:\Users\user\app\node_modules\tapable\lib\Tapable.js:134:6
    at Tapable.<anonymous> (c:\Users\user\app\node_modules\enhanced-resolve\lib\DirectoryDescriptionFilePlugin.js:68:32)
    at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19)
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:123:21
    at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:191:15
IngwiePhoenix commented 8 years ago

When you use the key "loader", only a string is expected. Use "loaders" if you want ot pass an array.

Am 14.02.2016 um 04:46 schrieb wzup notifications@github.com:

This throws an error:

    }, {
        test: require.resolve("jquery"),
        loader: ["imports?$=jquery,jQuery=jquery"]
    }],

This error:

$ webpack --config webpack.development.config.js -cd --progress --watch 20% 1/6 build modulesc:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:58 if(element.loader) return element.loader.split("!"); ^

TypeError: element.loader.split is not a function at getLoadersFromObject (c:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:58:43) at LoadersList. (c:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:78:12) at Array.map (native) at LoadersList.match (c:\Users\user\app\node_modules\webpack-core\lib\LoadersList.js:70:19) at c:\Users\user\app\node_modules\webpack\lib\NormalModuleFactory.js:111:68 at c:\Users\user\app\node_modules\async\lib\async.js:726:13 at c:\Users\user\app\node_modules\async\lib\async.js:52:16 at done (c:\Users\user\app\node_modules\async\lib\async.js:246:17) at c:\Users\user\app\node_modules\async\lib\async.js:44:16 at c:\Users\user\app\node_modules\async\lib\async.js:723:17 at c:\Users\user\app\node_modules\async\lib\async.js:167:37 at c:\Users\user\app\node_modules\enhanced-resolve\lib\UnsafeCachePlugin.js:29:4 at onResolved (c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:39:10) at innerCallback (c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:89:22) at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19) at c:\Users\user\app\node_modules\tapable\lib\Tapable.js:134:6 at c:\Users\user\app\node_modules\enhanced-resolve\lib\ModulesInDirectoriesPlugin.js:55:11 at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:191:15 at c:\Users\user\app\node_modules\enhanced-resolve\lib\ModulesInDirectoriesPlugin.js:46:14 at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19) at c:\Users\user\app\node_modules\tapable\lib\Tapable.js:134:6 at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:123:21 at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:191:15 at applyPluginsParallelBailResult.createInnerCallback.log (c:\Users\user\app\node_modules\enhanced-resolve\lib\Resol s:104:30) at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19) at c:\Users\user\app\node_modules\tapable\lib\Tapable.js:134:6 at Tapable. (c:\Users\user\app\node_modules\enhanced-resolve\lib\DirectoryDescriptionFilePlugin.js:68:32) at loggingCallbackWrapper (c:\Users\user\app\node_modules\enhanced-resolve\lib\createInnerCallback.js:21:19) at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:123:21 at c:\Users\user\app\node_modules\enhanced-resolve\lib\Resolver.js:191:15 — Reply to this email directly or view it on GitHub https://github.com/webpack/imports-loader/issues/18.

wzup commented 8 years ago

@IngwiePhoenix are you sure? Then how about this answer? https://github.com/webpack/imports-loader/issues/17#issuecomment-178701473

try loader: ['imports-loader?angular'], instead of loaders: ['imports-loader?angular'],

wzup commented 8 years ago

@IngwiePhoenix and actually you're right. It works if loader: String. So that guy was wrong, he gave wrong answer and I followed that.

IngwiePhoenix commented 8 years ago

Array does not have a split method, but String does. When using "loader:", WebPack expects a string and uses .split() on it with an exclamation point as the deliminator to extract loaders. Basically, you could imagine it this way:

var loaders = loaderList[matchedIndex].split("!")
SpaceK33z commented 8 years ago

Closing since this is a user error. In webpack v2 you'll get a very clear error message for an error like this.