Обновление до angular-6.x дает «Uncaught ReferenceError: global не определена» - PullRequest
0 голосов
/ 15 мая 2018

Я обновил свой проект с angular-5.x до angular-6.x, и он начал выдавать следующую ошибку, и даже создание фиктивной глобальной переменной не работает, как указано здесь Angular 6 Auth0 - глобальный не определен

Ошибка выглядит следующим образом:

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)

после устранения этой ошибки я получаю следующую ошибку:

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)    

И продолжается и продолжается.

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Добавление этой строки в polyfills.ts должно разрешить глобальную ошибку узла

(window as any).global = window;

Решение было упомянуто в этом angular-cli thred

0 голосов
/ 15 августа 2019

В случае, если ваша цель - это узел в веб-пакете (target: 'node'), потому что вы хотите исправить "Can't resolve 'fs'.Тогда вы получаете следующую ошибку Fix: "Uncaught ReferenceError: global is not defined", сделайте это следующим образом node: { global: true, fs: 'empty' }. Бонус : если вы получили ошибку "Uncaught ReferenceError: exports is not defined"., просто добавьте libraryTarget: 'umd'.Полный код конфигурации веб-пакета приведен ниже.

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.

Здесь было предложено много решений: https://github.com/angular/angular-cli/issues/8160

0 голосов
/ 15 мая 2018

Добавьте следующий код на стартовой странице, например, index.html

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

Пример:

<!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>

Выше будет работать как с гибридным приложением (в среде Node), так и с браузером

  • для «Uncaught ReferenceError: глобальный не определен»:

    var global = global || window;
    
  • для «Uncaught ReferenceError: Буфер не определен»:

    var Buffer = Buffer || [];
    
  • для «Uncaught ReferenceError: процесс не определен»:

    var process = process || {
      env: { DEBUG: undefined }
    }
    
  • для "Uncaught TypeError: Невозможно прочитать свойство 'slice' undefined":

    var process = process || {
      env: { DEBUG: undefined },
      version: []
    };
    
...