10

I am testing AWS Amplify from Angular to Cognito User Pool following:

https://docs.amplify.aws/lib/restapi/getting-started/q/platform/js

The Angular app has successfully compiled however the exception throws out in the Chrome console:

index.js:43 Uncaught ReferenceError: global is not defined
at Object../node_modules/buffer/index.js (index.js:43)
at __webpack_require__ (bootstrap:84)
at Module../node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js (AuthenticationHelper.js:1)
at __webpack_require__ (bootstrap:84)
at Module../node_modules/amazon-cognito-identity-js/es/index.js (index.js:1)
at __webpack_require__ (bootstrap:84)
at Module../node_modules/@aws-amplify/auth/lib-esm/Auth.js (Auth.js:1)
at __webpack_require__ (bootstrap:84)
at Module../node_modules/@aws-amplify/auth/lib-esm/index.js (index.js:1)
at __webpack_require__ (bootstrap:84)

ANy idea please?

beewest
  • 3,796
  • 6
  • 28
  • 53

3 Answers3

18

this suggestion works in this case as well.

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

or add to the end of polyfills.ts

(window as any).global = window;
(window as any).process = {
  env: { DEBUG: undefined },
};
beewest
  • 3,796
  • 6
  • 28
  • 53
9

The AWS docs suggest adding

(window as any).global = window;

(window as any).process = {
  env: { DEBUG: undefined },
};

to src/polyfills.ts

This has worked in my projects.

https://docs.amplify.aws/start/getting-started/data-model/q/integration/ionic#connect-frontend-to-api

glenn
  • 201
  • 2
  • 5
2

I had a chance to fix this issue by adding the below code to index.html file header section.

<head>
<script>
  if (global === undefined) {
    var global = window;
  }
</script>
</head>
Manoj Alwis
  • 1,163
  • 10
  • 21
  • 1
    Mate, thanks a ton for this. But, do you know why this works? Amplify - vanilla JS - Node.js etc. etc. etc. Thanks. – Rogelio Feb 21 '22 at 00:45