Open LuisFlip opened 5 years ago
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
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';
See https://github.com/NativeScript/nativescript-angular/issues/1540 about the same issue
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
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.
Replacing that lines fixed the issue.
Before the change, the dist/client files created by build have the following sizes:
After that replace, the build lines
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
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.
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.
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!
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 ?
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';
@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';
@koraysels I replace the uglify-js to terser. https://github.com/mishoo/UglifyJS2/issues/659#issuecomment-447820525 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
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
).
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';
@tschaffter it solved the problem for me
After create project using the generator, i built it in production environment and when i load the app the follow error appears.