aws-amplify / amplify-js

A declarative JavaScript library for application development using cloud services.
https://docs.amplify.aws/lib/q/platform/js
Apache License 2.0
9.43k stars 2.13k forks source link

DataStore macOS Safari and iOS and iPadOS browsers - ConstraintError and undefined model[f] error #10514

Closed ebeltran1981 closed 2 years ago

ebeltran1981 commented 2 years ago

Before opening, please confirm:

JavaScript Framework

Angular

Amplify APIs

DataStore

Amplify Categories

api

Environment information

``` # Put output below this line System: OS: macOS 12.6 CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz Memory: 7.41 GB / 64.00 GB Shell: 5.8.1 - /bin/zsh Binaries: Node: 16.18.0 - ~/.nvm/versions/node/v16.18.0/bin/node Yarn: 1.22.19 - /usr/local/bin/yarn npm: 8.19.2 - ~/.nvm/versions/node/v16.18.0/bin/npm Browsers: Chrome: 106.0.5249.119 Firefox: 106.0.1 Safari: 16.0 npmPackages: @angular-devkit/build-angular: ~13.3.2 => 13.3.9 @angular/animations: ~13.3.2 => 13.3.11 @angular/animations/browser: undefined () @angular/animations/browser/testing: undefined () @angular/cdk: ~13.3.2 => 13.3.9 @angular/cdk/a11y: undefined () @angular/cdk/accordion: undefined () @angular/cdk/bidi: undefined () @angular/cdk/clipboard: undefined () @angular/cdk/coercion: undefined () @angular/cdk/collections: undefined () @angular/cdk/drag-drop: undefined () @angular/cdk/keycodes: undefined () @angular/cdk/layout: undefined () @angular/cdk/observers: undefined () @angular/cdk/overlay: undefined () @angular/cdk/platform: undefined () @angular/cdk/portal: undefined () @angular/cdk/scrolling: undefined () @angular/cdk/stepper: undefined () @angular/cdk/table: undefined () @angular/cdk/testing: undefined () @angular/cdk/testing/protractor: undefined () @angular/cdk/testing/selenium-webdriver: undefined () @angular/cdk/testing/testbed: undefined () @angular/cdk/text-field: undefined () @angular/cdk/tree: undefined () @angular/cli: ~13.3.2 => 13.3.9 @angular/common: ~13.3.2 => 13.3.11 @angular/common/http: undefined () @angular/common/http/testing: undefined () @angular/common/testing: undefined () @angular/common/upgrade: undefined () @angular/compiler: ~13.3.2 => 13.3.11 @angular/compiler-cli: ~13.3.2 => 13.3.11 @angular/compiler/testing: undefined () @angular/core: ~13.3.2 => 13.3.11 @angular/core/testing: undefined () @angular/forms: ~13.3.2 => 13.3.11 @angular/localize: ~13.3.2 => 13.3.11 @angular/localize/init: undefined () @angular/material: ~13.3.2 => 13.3.9 @angular/material/autocomplete: undefined () @angular/material/autocomplete/testing: undefined () @angular/material/badge: undefined () @angular/material/badge/testing: undefined () @angular/material/bottom-sheet: undefined () @angular/material/bottom-sheet/testing: undefined () @angular/material/button: undefined () @angular/material/button-toggle: undefined () @angular/material/button-toggle/testing: undefined () @angular/material/button/testing: undefined () @angular/material/card: undefined () @angular/material/card/testing: undefined () @angular/material/checkbox: undefined () @angular/material/checkbox/testing: undefined () @angular/material/chips: undefined () @angular/material/chips/testing: undefined () @angular/material/core: undefined () @angular/material/core/testing: undefined () @angular/material/datepicker: undefined () @angular/material/datepicker/testing: undefined () @angular/material/dialog: undefined () @angular/material/dialog/testing: undefined () @angular/material/divider: undefined () @angular/material/divider/testing: undefined () @angular/material/expansion: undefined () @angular/material/expansion/testing: undefined () @angular/material/form-field: undefined () @angular/material/form-field/testing: undefined () @angular/material/form-field/testing/control: undefined () @angular/material/grid-list: undefined () @angular/material/grid-list/testing: undefined () @angular/material/icon: undefined () @angular/material/icon/testing: undefined () @angular/material/input: undefined () @angular/material/input/testing: undefined () @angular/material/list: undefined () @angular/material/list/testing: undefined () @angular/material/menu: undefined () @angular/material/menu/testing: undefined () @angular/material/paginator: undefined () @angular/material/paginator/testing: undefined () @angular/material/progress-bar: undefined () @angular/material/progress-bar/testing: undefined () @angular/material/progress-spinner: undefined () @angular/material/progress-spinner/testing: undefined () @angular/material/radio: undefined () @angular/material/radio/testing: undefined () @angular/material/select: undefined () @angular/material/select/testing: undefined () @angular/material/sidenav: undefined () @angular/material/sidenav/testing: undefined () @angular/material/slide-toggle: undefined () @angular/material/slide-toggle/testing: undefined () @angular/material/slider: undefined () @angular/material/slider/testing: undefined () @angular/material/snack-bar: undefined () @angular/material/snack-bar/testing: undefined () @angular/material/sort: undefined () @angular/material/sort/testing: undefined () @angular/material/stepper: undefined () @angular/material/stepper/testing: undefined () @angular/material/table: undefined () @angular/material/table/testing: undefined () @angular/material/tabs: undefined () @angular/material/tabs/testing: undefined () @angular/material/toolbar: undefined () @angular/material/toolbar/testing: undefined () @angular/material/tooltip: undefined () @angular/material/tooltip/testing: undefined () @angular/material/tree: undefined () @angular/material/tree/testing: undefined () @angular/platform-browser: ~13.3.2 => 13.3.11 @angular/platform-browser-dynamic: ~13.3.2 => 13.3.11 @angular/platform-browser-dynamic/testing: undefined () @angular/platform-browser/animations: undefined () @angular/platform-browser/testing: undefined () @angular/router: ~13.3.2 => 13.3.11 @angular/router/testing: undefined () @angular/router/upgrade: undefined () @aws-amplify/ui-angular: ~2.4.24 => 2.4.24 @aws-amplify/ui-angular/legacy: undefined () @fontsource/inter: ~4.5.7 => 4.5.14 @fortawesome/fontawesome-free: ~6.1.1 => 6.1.2 @ng-bootstrap/ng-bootstrap: ~12.0.2 => 12.0.2 @ngrx/component-store: ~13.1.0 => 13.1.0 @ngx-translate/core: ~14.0.0 => 14.0.0 @ngx-translate/http-loader: ~7.0.0 => 7.0.0 @popperjs/core: ~2.11.5 => 2.11.6 @types/bootstrap: ~5.1.9 => 5.1.13 @types/jasmine: ~4.0.3 => 4.0.3 @types/node: ~16.11.7 => 16.11.66 @types/object-path: ~0.11.1 => 0.11.1 @types/prismjs: ~1.26.0 => 1.26.0 @types/uuid: ~8.3.4 => 8.3.4 ajv: ~8.11.0 => 8.11.0 (8.9.0, 6.12.6) animate.css: ~4.1.1 => 4.1.1 apexcharts: ~3.35.0 => 3.35.5 aws-amplify: ~4.3.39 => 4.3.39 bootstrap: ~5.1.3 => 5.1.3 bootstrap-icons: ~1.8.1 => 1.8.3 clipboard: ~2.0.10 => 2.0.11 cropperjs: ~1.5.12 => 1.5.12 date-fns: ~2.28.0 => 2.28.0 jasmine-core: ~4.1.0 => 4.1.1 (3.99.1) karma: ~6.3.18 => 6.3.20 karma-chrome-launcher: ~3.1.1 => 3.1.1 karma-coverage: ~2.2.0 => 2.2.0 karma-coverage-coffee-example: 1.0.0 karma-jasmine: ~4.0.2 => 4.0.2 karma-jasmine-html-reporter: ~1.7.0 => 1.7.0 line-awesome: ~1.3.0 => 1.3.0 ng-apexcharts: ~1.7.1 => 1.7.1 ng-inline-svg-2: ~14.0.1 => 14.0.2 ngx-clipboard: ~15.1.0 => 15.1.0 ngx-mask: ~13.1.9 => 13.1.15 ngx-toastr: ~14.2.4 => 14.2.4 ngx-uploader: ~11.0.0 => 11.0.0 nouislider: ~15.5.1 => 15.5.1 object-path: ~0.11.8 => 0.11.8 prism-themes: ~1.9.0 => 1.9.0 prismjs: ~1.27.0 => 1.27.0 rxjs: ~7.5.5 => 7.5.7 (6.6.7) rxjs/ajax: undefined () rxjs/fetch: undefined () rxjs/internal-compatibility: undefined () rxjs/operators: undefined () rxjs/testing: undefined () rxjs/webSocket: undefined () socicon: ~3.0.5 => 3.0.5 tslib: ~2.3.1 => 2.3.1 (1.14.1, 2.4.0) typescript: ~4.5.5 => 4.5.5 uuid: ~8.3.2 => 8.3.2 (3.4.0, 3.3.2) zone-mix: undefined () zone-node: undefined () zone-testing: undefined () zone.js: ~0.11.5 => 0.11.8 zone.js/async-stack-tagging: undefined () zone.js/async-stack-tagging.min: undefined () zone.js/async-test: undefined () zone.js/async-test.min: undefined () zone.js/fake-async-test: undefined () zone.js/fake-async-test.min: undefined () zone.js/jasmine-patch: undefined () zone.js/jasmine-patch.min: undefined () zone.js/long-stack-trace-zone: undefined () zone.js/long-stack-trace-zone.min: undefined () zone.js/mocha-patch: undefined () zone.js/mocha-patch.min: undefined () zone.js/proxy: undefined () zone.js/proxy.min: undefined () zone.js/sync-test: undefined () zone.js/sync-test.min: undefined () zone.js/task-tracking: undefined () zone.js/task-tracking.min: undefined () zone.js/webapis-media-query: undefined () zone.js/webapis-media-query.min: undefined () zone.js/webapis-notification: undefined () zone.js/webapis-notification.min: undefined () zone.js/webapis-rtc-peer-connection: undefined () zone.js/webapis-rtc-peer-connection.min: undefined () zone.js/webapis-shadydom: undefined () zone.js/webapis-shadydom.min: undefined () zone.js/wtf: undefined () zone.js/wtf.min: undefined () zone.js/zone-bluebird: undefined () zone.js/zone-bluebird.min: undefined () zone.js/zone-error: undefined () zone.js/zone-error.min: undefined () zone.js/zone-legacy: undefined () zone.js/zone-legacy.min: undefined () zone.js/zone-patch-canvas: undefined () zone.js/zone-patch-canvas.min: undefined () zone.js/zone-patch-cordova: undefined () zone.js/zone-patch-cordova.min: undefined () zone.js/zone-patch-electron: undefined () zone.js/zone-patch-electron.min: undefined () zone.js/zone-patch-fetch: undefined () zone.js/zone-patch-fetch.min: undefined () zone.js/zone-patch-jsonp: undefined () zone.js/zone-patch-jsonp.min: undefined () zone.js/zone-patch-message-port: undefined () zone.js/zone-patch-message-port.min: undefined () zone.js/zone-patch-promise-test: undefined () zone.js/zone-patch-promise-test.min: undefined () zone.js/zone-patch-resize-observer: undefined () zone.js/zone-patch-resize-observer.min: undefined () zone.js/zone-patch-rxjs: undefined () zone.js/zone-patch-rxjs-fake-async: undefined () zone.js/zone-patch-rxjs-fake-async.min: undefined () zone.js/zone-patch-rxjs.min: undefined () zone.js/zone-patch-socket-io: undefined () zone.js/zone-patch-socket-io.min: undefined () zone.js/zone-patch-user-media: undefined () zone.js/zone-patch-user-media.min: undefined () npmGlobalPackages: @angular/cli: 14.2.6 @aws-amplify/cli: 10.2.3 corepack: 0.14.1 npm: 8.19.2 ```

Describe the bug

I'm having a hard time to debug an issue. It works fine in Edge/Chrome/Firefox, but in Safari get tons of errors when trying to use DataStore.query(). Any suggestion will be super appreciated.

This might not be a bug in your library, but have no idea how can I get more meaningful information from the logs to pinpoint the problem.

See the screenshot on both browsers:

image

Expected behavior

Both browsers should have the same behavior and query the data.

Reproduction steps

  1. npm install
  2. npm start
  3. navigate to a page that uses DataStore.query()
  4. works on Chrome/Edge/Firefox, fails in Safari, iOS and iPadOS browsers

Code Snippet

// Put your code below this line.
ngOnInit() {
    /**
     * Observe from the DataStore the states
     */
    this.store.patchState({isLoading: true});
    this.store.effect(() => zenToRx(DataStore.observeQuery(State)).pipe(
      filter(snapshot => snapshot.isSynced),
      map(snapshot => {
        this.store.patchState({
          isLoading: false,
          states: snapshot.items,
        });
      }),
    ));
  }

Log output

``` // Put your logs below this line [Log] [DEBUG] 31:50.185 AuthClass - Getting current session (vendor.js, line 13071) [Log] [DEBUG] 31:50.186 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083) CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser [Log] [DEBUG] 31:50.187 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083) CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession [Log] [DEBUG] 31:50.187 [MMB_APP_MODULE] - INIT - Auth session - is valid? – true (vendor.js, line 13083) [Log] [DEBUG] 31:50.188 [MMB_SERVICE] - Setting current user (vendor.js, line 13071) [Log] [DEBUG] 31:50.188 AuthClass - getting current authenticated user (vendor.js, line 13071) [Log] [DEBUG] 31:50.188 AuthClass - get current authenticated userpool user (vendor.js, line 13071) [Log] [DEBUG] 31:50.190 [MMB_SERVICE] - Setting DataStore (vendor.js, line 13071) [Log] [DEBUG] 31:50.191 [MMB_SERVICE] - Setting up Storage (vendor.js, line 13071) [Log] [DEBUG] 31:50.191 Storage - storage configure called (vendor.js, line 13071) [Log] [DEBUG] 31:50.191 StorageClass - configure Storage (vendor.js, line 13071) [Log] [DEBUG] 31:50.191 Parser - parse config – [{level: "public"}, "to amplifyconfig", Object] (3) (vendor.js, line 13083) [{level: "public"}, "to amplifyconfig", Object]Array (3) [Log] [DEBUG] 31:50.191 AWSS3Provider - configure Storage – {bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, …} (vendor.js, line 13083) {bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, level: "public"}Object [Log] [DEBUG] 31:50.192 Parser - parse config – [Object, "to amplifyconfig", Object] (3) (vendor.js, line 13083) [Object, "to amplifyconfig", Object]Array (3) [Log] [DEBUG] 31:50.192 Storage - storage vault configure called (vendor.js, line 13071) [Log] [DEBUG] 31:50.192 StorageClass - configure Storage (vendor.js, line 13071) [Log] [DEBUG] 31:50.192 Parser - parse config – [Object, "to amplifyconfig", Object] (3) (vendor.js, line 13083) [Object, "to amplifyconfig", Object]Array (3) [Log] [DEBUG] 31:50.192 AWSS3Provider - configure Storage – {bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, …} (vendor.js, line 13083) {bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, level: "private"}Object [Log] [DEBUG] 31:50.192 Parser - parse config – [Object, "to amplifyconfig", Object] (3) (vendor.js, line 13083) [Object, "to amplifyconfig", Object]Array (3) [Log] [DEBUG] 31:50.193 [MMB_SERVICE] - Setting up Hub listeners... (vendor.js, line 13071) [Log] Angular is running in development mode. Call enableProdMode() to enable production mode. (vendor.js, line 255648) [Info] Successfully preconnected to https://fonts.gstatic.com/ (x2) [Info] [webpack-dev-server] Live Reloading enabled. (polyfills.js, line 1935) [Log] [INFO] 31:50.624 DataStore - validating schema – {schema: Object} (vendor.js, line 13083) {schema: Object}Object [Log] [INFO] 31:50.624 DataStore - DataStore – "Init models" (vendor.js, line 13083) [Log] [INFO] 31:50.625 DataStore - DataStore – "Models initialized" (vendor.js, line 13083) [Log] [DEBUG] 31:50.631 AuthClass - Getting current session (vendor.js, line 13071) [Log] [DEBUG] 31:50.633 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083) CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser [Log] [DEBUG] 31:50.633 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083) CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession [Log] [DEBUG] 31:50.633 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivate", "/misc/states", …] (4) (vendor.js, line 13083) [true, "canActivate", "/misc/states", []]Array (4) [Log] [DEBUG] 31:50.634 AuthClass - Getting current session (vendor.js, line 13071) [Log] [DEBUG] 31:50.636 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083) CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser [Log] [DEBUG] 31:50.636 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083) CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession [Log] [DEBUG] 31:50.636 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivateChild", "/misc/states", …] (4) (vendor.js, line 13083) [true, "canActivateChild", "/misc/states", []]Array (4) [Log] [DEBUG] 31:50.637 AuthClass - Getting current session (vendor.js, line 13071) [Log] [DEBUG] 31:50.638 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083) CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser [Log] [DEBUG] 31:50.638 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083) CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession [Log] [DEBUG] 31:50.638 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivateChild", "/misc/states", …] (4) (vendor.js, line 13083) [true, "canActivateChild", "/misc/states", Array]Array (4) [Log] [DEBUG] 31:50.639 AuthClass - Getting current session (vendor.js, line 13071) [Log] [DEBUG] 31:50.640 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083) CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser [Log] [DEBUG] 31:50.640 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083) CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession [Log] [DEBUG] 31:50.640 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivateChild", "/misc/states", …] (4) (vendor.js, line 13083) [true, "canActivateChild", "/misc/states", []]Array (4) [Log] [DEBUG] 31:50.658 AuthClass - getting current authenticated user (vendor.js, line 13071) [Log] [DEBUG] 31:50.696 AuthClass - get current authenticated userpool user (vendor.js, line 13071) [Log] [DEBUG] 31:50.746 DataStore - Starting DataStore (vendor.js, line 13071) [Log] [DEBUG] 31:50.747 DataStore - Starting Storage (vendor.js, line 13071) [Log] [DEBUG] 31:51.366 DataStore - GraphQL endpoint available – "https://cey7ysjfijatzcdna2dtusztpu.appsync-api.us-east-1.amazonaws.com/graphql" (vendor.js, line 13083) [Log] [INFO] 31:51.369 DataStore - starting sync engine... (vendor.js, line 13071) [Warning] [WARN] 31:51.440 DataStore - Sync error – ConstraintError: A mutation operation in a transaction failed because a constraint was not satisfied. (vendor.js, line 13083) ConstraintError: A mutation operation in a transaction failed because a constraint was not satisfied. [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – undefined defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runTask (polyfills.js:3312) invokeTask (polyfills.js:3618) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) [Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError Error: Uncaught (in promise): AbortError: AbortError defaultErrorLogger (vendor.js:237194) handleError (vendor.js:237241) next (vendor.js:256874) next next (vendor.js:167882) _next (vendor.js:167851) next (vendor.js:167822) (anonymous function) (vendor.js:167667) errorContext (vendor.js:171613) next (vendor.js:167660) emit (vendor.js:253183) run (polyfills.js:3265) onHandleError (vendor.js:256334) runGuarded (polyfills.js:3278) (anonymous function) (polyfills.js:4203) drainMicroTaskQueue (polyfills.js:3723) invokeTask (polyfills.js:3622) invokeTask (polyfills.js:4792) globalCallback (polyfills.js:4823) ```

aws-exports.js

/* eslint-disable */
// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.

const awsmobile = {
    "aws_project_region": "us-east-1",
    "aws_cognito_identity_pool_id": "us-east-1:49220945-ae33-49ed-a3be-d827b9ef7d2b",
    "aws_cognito_region": "us-east-1",
    "aws_user_pools_id": "us-east-1_5WK7VsXvi",
    "aws_user_pools_web_client_id": "667h0ls44db5qcbnaabrib43c0",
    "oauth": {},
    "aws_cognito_username_attributes": [],
    "aws_cognito_social_providers": [],
    "aws_cognito_signup_attributes": [
        "EMAIL",
        "NAME",
        "PHONE_NUMBER"
    ],
    "aws_cognito_mfa_configuration": "OFF",
    "aws_cognito_mfa_types": [
        "SMS"
    ],
    "aws_cognito_password_protection_settings": {
        "passwordPolicyMinLength": "10",
        "passwordPolicyCharacters": [
            "REQUIRES_LOWERCASE",
            "REQUIRES_UPPERCASE",
            "REQUIRES_NUMBERS",
            "REQUIRES_SYMBOLS"
        ]
    },
    "aws_cognito_verification_mechanisms": [
        "EMAIL"
    ],
    "aws_appsync_graphqlEndpoint": "https://cey7ysjfijatzcdna2dtusztpu.appsync-api.us-east-1.amazonaws.com/graphql",
    "aws_appsync_region": "us-east-1",
    "aws_appsync_authenticationType": "AMAZON_COGNITO_USER_POOLS",
    "aws_user_files_s3_bucket": "mmbmainbucket150042-staging",
    "aws_user_files_s3_bucket_region": "us-east-1"
};

export default awsmobile;

Manual configuration

No response

Additional configuration

No response

Mobile Device

iPhone 14 Pro Max

Mobile Operating System

iOS 16

Mobile Browser

Safari, Edge

Mobile Browser Version

No response

Additional information and screenshots

No response

espenbye commented 2 years ago

+1 We are experiencing the same problem. Works on Chrome, but not on Safari and Brave (desktop)

Dennis-Dekker commented 2 years ago

+1 Same issue, also safari only.

foobarnes commented 2 years ago

Same problem.

Experiencing the issue on:

didar-dev commented 2 years ago

Same issue , safari

schutzelaars commented 2 years ago

+1 Same issue, MacOS Safari & iOS Safari.

guy-a commented 2 years ago

Reverting to aws-amplify to 4.3.32 will resolver this issue for now.

This bug was probably introduced with version 4.3.33 with the changing of the DataStore indexedDB indexes. 4.3.33 is already 2 months old, and with Amplify popularity, I'm wondering how come it's only being submitted now...

Dennis-Dekker commented 2 years ago

We reverted to 4.3.37 and it seems to work for this version. We might check 4.3.38, but this version probably contains the problem.

schutzelaars commented 2 years ago

By quickly glancing over the latest DataStore commits. I think this issue originated here, and was merged in release: 4.3.38. (IndexedDB version was incremented. v0.2 > v0.3).

guy-a commented 2 years ago

You are right, 4.3.37 is still on version 2. I had other issues with 4.3.33 that might be unrelated. Thanks.

chrisbonifacio commented 2 years ago

Hey @ebeltran1981 and everyone else 👋 thank you for reporting this issue. I have reproduced the issue in Safari and can confirm that I did not see this error when downgrading to aws-amplify@4.3.37 or below, which I suggest as a work around until we publish a fix soon.

chrisbonifacio commented 2 years ago

Related (same error): https://github.com/aws-amplify/amplify-js/issues/10508

foobarnes commented 2 years ago

Thanks @chrisbonifacio! Is there anywhere we can add tests for this in the future? Happy to help!

iartemiev commented 2 years ago

Hey folks, we've got a PR up that addresses this issue: https://github.com/aws-amplify/amplify-js/pull/10527. We're reviewing and testing the changes and will get a release out ASAP. We'll keep you posted in this issue.

We'll also be actively exploring options for end-to-end testing DataStore on Safari. Feel free to share any recommendations on testing frameworks/platforms that support Safari on desktop and/or mobile.

iartemiev commented 2 years ago

We just released aws-amplify@4.3.40 that fixes this issue.

ArsSirek commented 11 months ago

Encountered the same error on aws-amplify@5.3.8 with Safari 14.1.2. I guess it is the old Safari issue with indexDB, but decided to leave a note here in case if that matters to someone