global is not defined in Angular 6
DanielRose opened this issue ยท 6 comments
I am using this in an Angular app. After upgrading to Angular 6, I get the following error:
sctransport.js:7 Uncaught ReferenceError: global is not defined
at Object../node_modules/socketcluster-client/lib/sctransport.js (sctransport.js:7)
at webpack_require (bootstrap:81)
at Object../node_modules/socketcluster-client/lib/scclientsocket.js (scclientsocket.js:6)
at webpack_require (bootstrap:81)
at Object../node_modules/socketcluster-client/index.js (index.js:1)
at webpack_require (bootstrap:81)
at Object../src/app/SocketClusterClient.ts (main.js:916)
The SocketClusterClient.ts
is my code, and includes
import * as sc from 'socketcluster-client';
The reason is that Angular no longer includes shims for node globals. As a workaround I can manually shim it, but it would be better to solve this here.
For those wondering, the shim is (<any>window).global = window
. Simple enough, but should not be necessary.
Same issue in a newly created Vue/Vite project with socketcluster-client 17.1.1.
Easily worked around by adding define: { global: {} }
in vite.config.ts
, but a bit annoying...
This line seems to be the culprit:
socketcluster-client/lib/transport.js
Line 6 in f36d89e
Should be fixed now without the need for a shim though I didn't test with any specific framework . Feel free to reopen if needed.
@jondubois thanks, that was quick! :)
Unfortunately on Vue/Vite without the global
shim I now get the same error from this line:
socketcluster-client/lib/clientsocket.js
Line 176 in 69fb145
Replacing global
with window
in clientsocket.js
worked for me...
@minsulander OK. I pushed another update socketcluster-client@17.2.2
just now which should fix this issue as well. It's probably best to upgrade as there were other parts in the code which had global
references which could affect edge cases. Let me know if there is any other issue.
Well done @jondubois, works like a charm now with 17.2.2.
Thanks a bunch!