Skip to content
This repository has been archived by the owner on Dec 3, 2023. It is now read-only.

Uncaught TypeError: Cannot read property 'module' of undefined #16

Closed
andrey-skl opened this issue Dec 3, 2014 · 5 comments
Closed

Comments

@andrey-skl
Copy link

  1. Clone https://github.com/stackfull/angular-seed which demonstrate angular-webpack-plugin using
  2. Remove all dependencies from app.js except ngRoute
  3. Build app.min.js with webpack and include it to index.html
  4. run project with npm start
  5. Open http://localhost:8000 and see that error

This is because angular is not defined when angular-route trying to initialize.

@stackfull
Copy link
Owner

This is a good one. The plugin arranges for a "require('angular')" every time "angular" is used as a free variable in a module - this is usually the case with angular modules. But the libraries from the angular team don't use "angular" as a free variable, but "window.angular". So I tried setting "window.angular = require('angular')" whenever "window" is used - but that puts a nice little infinite recursion in the angular.js library itself.

The usual way to get around all this "window.something" with webpack is to go to the npm source instead (works great with react.js for example) - but angular on npm isn't commonjs so that's no use. So it seems that the only realistic options are to:

  1. ask the user to force dependencies for such badly-behaved modules (shim, essentially)
  2. add knowledge of ngRoute etc. to the plugin.

Option 1 is a pain for the user. Option 2 seems to be stretching things a little and will likely still leave only option 1 for other 3rd party libraries built the same way.

Of course, there's always option 3 - throw in the towel. Gotta love angular, but I've never seen another framework hate on other ways of doing things (or other libraries) so bad.

@andrey-skl
Copy link
Author

Just look my #17 pull request - the fix is pretty simple)

@stackfull
Copy link
Owner

I'll be damned - It shouldn't work but it does! I'll need to update the scenario tests and move the "expression window.angular" bit up to the top, but thanks!

@andrey-skl
Copy link
Author

I'm novice at webpack so I'm not sure too. It is just simplified webpack.ProvidePlugin code and it works. Sorry for tests.

@stackfull
Copy link
Owner

Should be fixed in v0.0.3 (bea1442)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants