Closed amitport closed 6 years ago
I seeing the same issue as well with ng-socket-io
but also with import 'intl';
in polyfills.ts
(window as any).global = window;
to pollyfils.ts
, but it didn't work. 1.5.0-rc.1
workedStrange I've reverted to 1.5.0-rc.2
and still get it, no idea what's going on.
@dottodot
oh sorry, I actually reverted to 1.5.0-rc.1
in any case, make sure it's a clean revert. try deleting node_modules and packge/yarn-lock before npm i
Thanks that worked. I've gone back to 1.5.0-rc.2
and that's ok for me so seems like the issue is in 1.5.0-rc.3
Same problem here since 1.5.0-rc.3
, with 1.5.0-rc.2
no problems...
Same error using rc.3 Uncaught ReferenceError: global is not defined also importing another library (jsrsasing). It worked fine until rc.2.
Hi guys, could you please provide a simple repo of this issue, that way it's easier and faster for the team to be able to debug the issue.
@RicardoVaranda https://github.com/dottodot/ang5-test
All i've done is create a new project with 1.5.0-rc.3 and included import 'intl';
in polyfills.ts and you get the error
This is definitely related to https://github.com/angular/angular-cli/pull/8132 as we've removed the node global
object from the compilation environment. I'm investigating what can be done about it.
Just wanted to let you know we're looking into this. For the intl
case using import 'intl/dist/intl';
instead fixes it, but this might not be possible for all libs. socket.io-client
also seems to have a dist in socket.io-client/dist/socket.io.js
. I don't think the same can be used with ng-socket-io
however, since it's importing the node package inside of it...
Hey, I just wanted to chime in. I have the same issue upgrading to 1.5.0-rc.3
causes this issue, 1.5.0-rc.2
works fine. Didn't change anything just upgraded thew version. I use the following polyfills:
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/set';
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
import 'classlist.js'; // Run `npm install --save classlist.js`.
/** IE10 and IE11 requires the following to support `@angular/animation`. */
import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/** Evergreen browsers require these. **/
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';
/***************************************************************************************************
* Zone JS is required by Angular itself.
*/
import 'zone.js/dist/zone'; // Included with Angular CLI.
With Rc.6 still having same problem.
There's a pull request which I assume will fix it guess we just need to wait for it to be added
This is fixed for me with release 1.5.0-rc.8
(https://github.com/angular/angular-cli/pull/8250). Thanks!
Hi,
I am using Dragula version 1.5.0 with Angular 5, and still having problem
"ReferenceError: global is not defined"
I have just installed it, imported and added to NgModule -> Imports, and my app crashes with this error.
Is there any step I am missing??
On version 6 of Angular CLI we are removing the shim for global
and other node built-ins. You can read more about why this change was made in https://github.com/angular/angular-cli/issues/9827#issuecomment-369578814.
If you are using a library that assumes these globals are present, you can try manually shimming it inside your polyfills.ts
file:
// Add global to window, assigning the value of window itself.
(window as any).global = window;
I ran a quick test with socket.io-client
and this seemed to allow it to run.
@filipesilva Thank you so much!
declare var $: any; I am getting the error $ not defined
In my polyfills.ts, the import references to intl
were still there. Comment out or delete these if you get stuck, then add (window as any).global= window
as @filipesilva stated above.
It seems that all the import-statements in the polyfill.ts are hoisted in the compiled polyfill.js. Therefore putting
(window as any).global = window;
at the top of the file polyfill.ts did not solve the issue for me, since in the compiled polyfill.js this command was located at the very end of the file (after all the imports).
Solution
I had to put the line
(window as any).global = window;
in a new file (for example "global-shim.ts")
and import this file at the very top of the polyfill.ts
import 'global-shim';
@tobias74 I put it in the end of the file, it worked for me.
When I adding sockjs-client, I got the same issue. npm install sockjs-client --save
I did as @tobias74 ,maybe it worked,but the brower refreshes frequenly.
@tobias74 Thanks that worked
@filipesilva Thank you!!!!!!!!! ^_^
I removed all these things.
import 'intl'; (window as any).global = window; // Run
npm install --save intl. import 'intl/locale-data/jsonp/en';
AND NOW :D This polyfill.ts is working for me.
`import 'core-js/es6/symbol'; import 'core-js/es6/object'; import 'core-js/es6/function'; import 'core-js/es6/parse-int'; import 'core-js/es6/parse-float'; import 'core-js/es6/number'; import 'core-js/es6/math'; import 'core-js/es6/string'; import 'core-js/es6/date'; import 'core-js/es6/array'; import 'core-js/es6/regexp'; import 'core-js/es6/map'; import 'core-js/es6/weak-map'; import 'core-js/es6/set';
import 'core-js/es7/array';
/* IE10 and IE11 requires the following for NgClass support on SVG elements /
import 'classlist.js'; // Run npm install --save classlist.js
.
/* IE10 and IE11 requires the following for the Reflect API. / import 'core-js/es6/reflect';
/ Evergreen browsers require these. / // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. import 'core-js/es7/reflect';
/**
@angular/common/animations
.npm install --save web-animations-js
./***
/***
/**
On version 6 of Angular CLI we are removing the shim for
global
and other node built-ins. You can read more about why this change was made in #9827 (comment).If you are using a library that assumes these globals are present, you can try manually shimming it inside your
polyfills.ts
file:// Add global to window, assigning the value of window itself. (window as any).global = window;
I ran a quick test with
socket.io-client
and this seemed to allow it to run.
Is this the right way of implementing socket.io in Angular 2? I mean does the above line give any side affects that may be obtrusive in the future?
solution of @filipesilva is worked . i have issue when i am migrating ng5 to ng6 . thanks @filipesilva
@filipesilva I see this is pretty old issue but even today, newly generated project and I am testing apolo graphql does not add the global.
so I have to add to my polyfills.ts
the (window as any).global = window;
Is this normal ?
Yes. global
does not exist in a browser. A library that supports web browsers should not be using Node.js specific functionality.
Will this ever be fixed in the main module? Still apparently happens in new projects.
I've tried adding a basic AwsAmplify project and this happens.
@willkara, read the comment right before yours.
Follow the stack trace to see which package uses global
. submit an actionable, reproducible issue on that package repo
(also, "happens in new projects." is very different from happened when you "tried adding a basic AwsAmplify")
@amitport fair comment. I'll follow the trace again and see where it happens.
In case, if your target is node in webpack (target: 'node'
), because you want to fix "Can't resolve 'fs'
. Then you're getting the following error Fix: "Uncaught ReferenceError: global is not defined"
do it as follows node: { global: true, fs: 'empty' }
. Bonus: if you got error "Uncaught ReferenceError: exports is not defined".
simply add libraryTarget: 'umd'
. The complete webpack config code is below.
const webpackConfig = {
node: { global: true, fs: 'empty' }, // Fix: "Uncaught ReferenceError: global is not defined", and "Can't resolve 'fs'".
output: {
libraryTarget: 'umd' // Fix: "Uncaught ReferenceError: exports is not defined".
}
};
module.exports = webpackConfig; // Export all custom Webpack configs.
@filipesilva can you lock this issue? seem to keep "sprouting" in all directions even though it's closed.
just add (window as any).global = window; in polyfills.ts in ionic
This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
This action has been performed automatically by a bot.
Bug Report or Feature Request (mark with an
x
)Versions.
Repro steps.
create angular/cli project add dependency and import
socket.io-client@2.0.4
ng serve --aot open browserThe log given by the failure.