Upgrading to angular-6.x gives “Uncaught ReferenceError: global is not defined”

匿名 (未验证) 提交于 2019-12-03 00:46:02

问题:

I upgraded my project from angular-5.x to angular-6.x and it started giving the following error and even creation of dummy global variable does not work as given here Angular 6 Auth0 - global not defined

The error is as follows:

Uncaught ReferenceError: global is not defined     at Object../node_modules/has-binary2/index.js (index.js:10)     at __webpack_require__ (bootstrap:81)     at Object../node_modules/socket.io-parser/index.js (index.js:8)     at __webpack_require__ (bootstrap:81)     at Object../node_modules/socket.io-client/lib/index.js (index.js:7)     at __webpack_require__ (bootstrap:81)     at Object../src/app/app4pc/apiConnection/services/ApiConnectionServer.ts (auth.interceptor.ts:8)     at __webpack_require__ (bootstrap:81)     at Object../src/app/app4pc/apiConnection/toServer.module.ts (ApiConnectionServer.ts:11)     at __webpack_require__ (bootstrap:81) 

after resolving this I get following error:

Uncaught ReferenceError: process is not defined     at Object../node_modules/process-nextick-args/index.js (index.js:3)     at __webpack_require__ (bootstrap:81)     at Object../node_modules/readable-stream/lib/_stream_readable.js (_stream_readable.js:26)     at __webpack_require__ (bootstrap:81)     at Object../node_modules/readable-stream/readable-browser.js (readable-browser.js:1)     at __webpack_require__ (bootstrap:81)     at Object../node_modules/simple-peer/index.js (index.js:7)     at __webpack_require__ (bootstrap:81)     at Object../src/app/util/services/call.services.ts (notification.service.ts:12)     at __webpack_require__ (bootstrap:81)     

And continues on and on.

回答1:

Add following code in your starting page e.g. index.html

var global = global || window;     var Buffer = Buffer || [];     var process = process || {       env: { DEBUG: undefined },       version: []     }; 

e.g. follows:

<!doctype html> <html lang="en"> <head>   <meta charset="utf-8">   <title>Client</title>   <base href="/">   <meta name="viewport" content="width=device-width, initial-scale=1">   <link rel="icon" type="image/x-icon" href="favicon.ico">   <script>     var global = global || window;     var Buffer = Buffer || [];     var process = process || {       env: { DEBUG: undefined },       version: []     };   </script> </head> <body>   <app-root>     <div class="loader"></div>   </app-root> </body> </html> 

Above will work on hybrid app(in node environment) as well as in browser

  • var global = global || window; // for Uncaught ReferenceError: global is not defined

  • var Buffer = Buffer || []; // for Uncaught ReferenceError: Buffer is not defined

  • var process = process || { env: { DEBUG: undefined } } // for Uncaught ReferenceError: process is not defined

  • var process = process || { env: { DEBUG: undefined }, version: [] }; // Uncaught TypeError: Cannot read property 'slice' of undefined



回答2:

Adding this line to polyfills.ts should resolve node global error

(window as any).global = window;

The solution was mentioned in this angular-cli issue thred



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!