Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uncaught Error: Can't resolve all parameters for e: (?) #2770

Open
1 task done
LuisFlip opened this issue Oct 24, 2018 · 15 comments · Fixed by #2771
Open
1 task done

Uncaught Error: Can't resolve all parameters for e: (?) #2770

LuisFlip opened this issue Oct 24, 2018 · 15 comments · Fixed by #2771
Labels

Comments

@LuisFlip
Copy link

  • I understand that GitHub issues are not for tech support, but for questions specific to this generator, bug reports, and feature requests.
Item Version
generator-angular-fullstack 5.0.0 RC4
Node 8.12.0
npm 6.4.1
Operating System Windows 10
Item Answer
Transpiler TypeScript
Markup HTML
CSS SCSS
Client Tests Mocha
DB MongoDB
Auth Y

After create project using the generator, i built it in production environment and when i load the app the follow error appears.

image

@LuisFlip
Copy link
Author

LuisFlip commented Oct 25, 2018

i run:
gulp build
in file dist/server/index.js change development to production:
--> var env = process.env.NODE_ENV = process.env.NODE_ENV || 'production';
cd dist
node server/index.js
next open localhost:8080
and get the error

@Awk34 Awk34 added the bug label Oct 25, 2018
@Awk34
Copy link
Member

Awk34 commented Oct 25, 2018

I was able to reproduce and fix this locally. Apparently it's an issue with webpack bundling.

Manually add the following to the top of your polyfills.ts file:

import 'reflect-metadata';

@Awk34
Copy link
Member

Awk34 commented Oct 25, 2018

See NativeScript/nativescript-angular#1540 about the same issue

@LuisFlip
Copy link
Author

LuisFlip commented Oct 26, 2018

i try the following:

import 'reflect-metadata';
// import 'core-js/es6';
// import 'core-js/es7/reflect';
import 'zone.js/dist/zone';

or

import 'reflect-metadata';
// import 'core-js/es6';
// import 'core-js/es7/reflect';
//import 'zone.js/dist/zone';

and other variants allways with reflect-metadata uncommented and the problem persists.

i don't have the nativescript-angular in my project.
Ther project is new and i dont have add any line of code.

other question, is this building in jit or aot?
if is in jit, how i build project with AOT?

Thanks

@Awk34 Awk34 reopened this Oct 29, 2018
@Awk34
Copy link
Member

Awk34 commented Oct 29, 2018

It has nothing to do with that project; they just had a similar issue.

I was able to reproduce this, but adding the reflect-metadata import fixed the issue for me. Can you provide some more details about your case? Perhaps replace these lines: https://github.com/angular-fullstack/generator-angular-fullstack/blob/master/templates/app/webpack.make.js#L29-L31 with this:

config.mode = 'development';

and try building again, so we can see the un-minified error.

@LuisFlip
Copy link
Author

Replacing that lines fixed the issue.

Before the change, the dist/client files created by build have the following sizes:
image
After that replace, the build lines
image

why we a have three warnings because of the size (1.3~mb) and after the changes we got higher values but not showing any warning?

is this in AOT or JIT?

best regards and thanks

@ghost
Copy link

ghost commented Nov 2, 2018

It has nothing to do with that project; they just had a similar issue.

I was able to reproduce this, but adding the reflect-metadata import fixed the issue for me. Can you provide some more details about your case? Perhaps replace these lines: https://github.com/angular-fullstack/generator-angular-fullstack/blob/master/templates/app/webpack.make.js#L29-L31 with this:

config.mode = 'development';

and try building again, so we can see the un-minified error.

This fixed the issue for me as well.

@Awk34
Copy link
Member

Awk34 commented Nov 2, 2018

That change isn't meant to fix the issue, just turn off minification so that we can debug the error better, but if the error goes away when you set Webpack to development mode, then it has to have something to do with minification for builds.

@koraysels
Copy link

koraysels commented Nov 6, 2018

yeah the error ahs something to do with the reflect polyfill.. I have the same issue.
It Seems he cannot bootstrap the application correctly! If you set the buidlmode to development it will work and no error will be displayed. so we cannot debug it that way :( i can;t not have minified code in prodcution!

@koraysels
Copy link

koraysels commented Nov 9, 2018

This is a problem with UglifyJs. If you set the webpack mode to 'production' it enabels UglifyJsPlugin and then it fails.. I tried differetn options for the UglifyJsPlugin but I cannot get it to work. I think the dependency injection breaks when minification is applied. Do we need some kind of annotation plugin ?

@Sina7312
Copy link

I did this at top of my app.ts file, and it solve the problem:
(commented out polyfills import, and add imports for reflect and zone.js)

import 'reflect-metadata';
import 'zone.js/dist/zone';
// import './polyfills';

@LuisFlip
Copy link
Author

@Awk34 I solve the problem adding reflect-metadata on top of app.ts
app.ts:

import 'reflect-metadata';
import 'zone.js/dist/zone';
//import './polyfills';

@LuisFlip
Copy link
Author

@koraysels I replace the uglify-js to terser.
mishoo/UglifyJS#659 (comment)
if you want continues using the uglify-js you need install UglifyJS2#harmony-v2.8.22. see: https://github.com/webpack-contrib/uglifyjs-webpack-plugin/tree/version-0.4#install

@tschaffter
Copy link

tschaffter commented Apr 3, 2019

Moving the imports from polyfills.ts to app.ts solves the issue as suggested here by @LuisFlip.

The Uglifier is not the issue (the issue is still there when commenting it in webpack.make.js).

Solution

In webpack.make.js, declare polyfills before app in config.entry.

Before:

    if (!TEST) {
        config.entry = {
            app: './client/app/app.ts',
            polyfills: './client/app/polyfills.ts',
            vendor: [
                'lodash'
            ]
        };
    }

Now:

    if (!TEST) {
        config.entry = {
            polyfills: './client/app/polyfills.ts',
            vendor: [
                'lodash'
            ],
            app: './client/app/app.ts'
        };
    }

Here is what I have included at the top of ./poyfills.ts:

// Enable certain polyfills depending on which browsers you need to support
import 'core-js/es6';
import 'core-js/es7/reflect';
import 'zone.js/dist/zone';

@atxiaoxian
Copy link

@tschaffter it solved the problem for me

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

Successfully merging a pull request may close this issue.

6 participants