Angular 6 Uncaught ReferenceError: буфер не определен

Я пытаюсь перейти с 5 на 6, используя ng update и я получаю ошибку

Uncaught ReferenceError: Buffer is not defined
    at Object../node_modules/amazon-cognito-identity-js/node_modules/crypto-browserify/helpers.js (helpers.js:2)
    at __webpack_require__ (bootstrap:81)
    at Object../node_modules/amazon-cognito-identity-js/node_modules/crypto-browserify/md5.js (md5.js:10)
    at __webpack_require__ (bootstrap:81)
    at Object../node_modules/amazon-cognito-identity-js/node_modules/crypto-browserify/create-hash.js (create-hash.js:3)
    at __webpack_require__ (bootstrap:81)
    at Object../node_modules/amazon-cognito-identity-js/node_modules/crypto-browserify/index.js (index.js:12)
    at __webpack_require__ (bootstrap:81)
    at Object../node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js (vendor.js:47207)
    at __webpack_require__ (bootstrap:81)

локальная среда хорошо работает для создания нового углового проекта. Я не использую буфер. Это что-то за кулисами

какие идеи?

UPD

Я пытался обновить @types / node npm install --save-dev @types/node

+ @types/node@8.9.5
updated 1 package in 12.031s
[!] 26 vulnerabilities found [36141 packages audited]
    Severity: 11 Low | 13 Moderate | 2 High
    Run `npm audit` for more detail

если я запускаю npm audit

npm ERR! code ENOAUDIT
npm ERR! audit Your configured registry (https://registry.npmjs.org/) does not support audit requests.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/myname/.npm/_logs/2018-05-16T13_45_17_410Z-debug.log

4 ответов


хорошо, через час мне наконец удалось заставить cognito работать над моим угловым приложением (сразу после обновления до 6.0).

о (или что-то близкое, не помню). Добавьте следующее в .HTML-код:

<!doctype html>
<html lang="en">
<head>
  ...

  <script>
    var global = global || window;
  </script>
</head>

тогда вы, вероятно, получите сообщение об ошибке, что буфер не определен.

установить buffer пакет с использованием npm или пряжи. И добавьте следующее в polyfills.ТС ():

global.Buffer = global.Buffer || require('buffer').Buffer;

Stackoverflow ответы / GitHub вопросы, которые помогли мне в случае, если это не исправлено для вас после этого:

обновление до углового-6.x дает " Uncaught ReferenceError: глобальный не определено"

https://github.com/aws/aws-amplify/issues/840#issuecomment-389459988

https://github.com/aws/aws-amplify/issues/678

https://github.com/aws/aws-amplify/issues/153

https://github.com/crypto-browserify/createHash/issues/20


@maxime1992
Для меня, в начале, это также решило проблему, которую я обнаружил с миграция в angular 6, т. е. хорошо сформулированный модуль, но не найден, когда вы хотите перейти на один из этих видов.
Проблема возникла оттуда, а не из моего импорта модуля или другого.

но когда я начинаю ng test команда, теперь у меня есть эта ошибка :

DeprecationWarning: Tapable.плагин устарел. Использовать новое API on .hooks вместо

по-видимому, это проблема webpack.
Поэтому, я предпочитаю использовать это решение :
Добавление этой строки в polyfills.ts должен разрешить глобальную ошибку узла

(window as any).global = window;

еще раз спасибо !!!


Это результат изменения углового поведения CLI. В итоге я решил это, используя следующий патч:

https://gist.github.com/niespodd/1fa82da6f8c901d1c33d2fcbb762947d

см. здесь для большего контекста:

https://github.com/angular/angular-cli/issues/1548


скрипт пытается потребовать версию буфера браузера, но не может ее найти. Запуск простой

npm install buffer

добавить пакет в папку package.json и удалите ошибку на данный момент.