Nordth / dojo-webpack-loader

Webpack loader for Dojo Toolkit 1.x
MIT License
36 stars 11 forks source link

module dependency conflicts with NodeStuffPlugin: module.id becomes module.i #9

Open lumen0988 opened 8 years ago

lumen0988 commented 8 years ago

I had a problem with module dependecy in some files which will be processed by the webpack NodeStuffPlugin.

Situation is as follows:

The dojo-webpack-loader will prepend your module body with module={id:normalizedModuleName} if you have module as AMD dependency. If you use module.id in your code this will be replaced by the NodeStuffPlugin with module.i whilst module={id:normalizedModuleName} doesn't get replaced. This leads to several undefined errors on runtime.

Solution

A solution for this is to change the prepend code to module={}; module.id = normalizedModuleName; which can be achieved by replacing line 169 in index.js with module.inject.prepend += `${dep.name}={}; ${dep.name}.id=${JSON.stringify(module.normalizedName ? module.normalizedName : '')}`;