Ошибка Amplify GraphQL «Невозможно прочитать свойство aws_appsync_region, равное нулю» - PullRequest
0 голосов
/ 05 мая 2020

После добавления хранилища в мой проект Amplify я получил следующую ошибку:

AppComponent_Host.ngfactory.js? [sm]:1 ERROR TypeError: Cannot read property 'aws_appsync_region' of null
    at GraphQLAPIClass.push.../../node_modules/@aws-amplify/api-graphql/lib-esm/GraphQLAPI.js.GraphQLAPIClass._graphqlSubscribe (GraphQLAPI.js:342)
    at GraphQLAPIClass.push.../../node_modules/@aws-amplify/api-graphql/lib-esm/GraphQLAPI.js.GraphQLAPIClass.graphql (GraphQLAPI.js:247)
    at APIClass.push.../../node_modules/@aws-amplify/api/lib-esm/API.js.APIClass.graphql (API.js:206)
    at new APIService (API.service.ts:2004)
    at core.js:11183
    at _callFactory (core.js:20296)
    at _createProviderInstance (core.js:20254)
    at resolveNgModuleDep (core.js:20229)
    at NgModuleRef_.push.../../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:20905)
    at injectInjectorOnly (core.js:628)

Проект создан в Angular

Angular CLI: 8.3.3
Node: 12.16.1
OS: win32 x64
Angular: 8.2.14

Это мой main.ts

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import Amplify from 'aws-amplify';
import { AppModule } from './app/app.module';
import awsconfig from './aws-exports';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic()
  .bootstrapModule(AppModule)
  .catch(err => console.error(err));

Amplify.configure(awsconfig);

Когда я меняю конфигурацию в main.ts на:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import API from '@aws-amplify/api';
import Auth from '@aws-amplify/auth';
import PubSub from '@aws-amplify/pubsub';
import Storage from '@aws-amplify/storage';
//import Amplify from 'aws-amplify';
import { AppModule } from './app/app.module';
import awsconfig from './aws-exports';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic()
  .bootstrapModule(AppModule)
  .catch(err => console.error(err));

//Amplify.configure(awsconfig);

Auth.configure(awsconfig);
Storage.configure(awsconfig);
API.configure(awsconfig);
PubSub.configure(awsconfig);

Затем приложение загружается, но при использовании хранилища я получаю эту ошибку:

[WARN] 42:23.733 AWSS3Provider - ensure credentials error No Auth module registered in Amplify
No credentials

Кроме того, когда я меняю main.ts на:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import API from '@aws-amplify/api';
import PubSub from '@aws-amplify/pubsub';
import Amplify from 'aws-amplify';
import { AppModule } from './app/app.module';
import awsconfig from './aws-exports';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic()
  .bootstrapModule(AppModule)
  .catch(err => console.error(err));

Amplify.configure(awsconfig);

// Auth.configure(awsconfig);
// Storage.configure(awsconfig);
API.configure(awsconfig);
PubSub.configure(awsconfig);

Эта ошибка регистрируется при попытке использовать хранилище:

TypeError: Cannot read property 'put' of undefined
    at Storage.<anonymous> (Storage.js:229)
    at step (Storage.js:55)
    at Object.next (Storage.js:36)
    at Storage.js:30
    at new ZoneAwarePromise (zone.js:931)
    at push.../../node_modules/@aws-amplify/storage/lib-esm/Storage.js.__awaiter (Storage.js:26)
    at Storage.push.../../node_modules/@aws-amplify/storage/lib-esm/Storage.js.Storage.put (Storage.js:220)
    at RealtimeSessionService.push../src/app/services/realtime/realtime-session.service.ts.RealtimeSessionService.uploadFileTester (realtime-session.service.ts:355)
    at NavComponent.push../src/app/components/nav/nav.component.ts.NavComponent.addFile (nav.component.ts:96)
    at Object.eval [as handleEvent] (NavComponent.html:27)
core.js:4002 ERROR Error: Uncaught (in promise): No plugin found in Storage for the provider
    at resolvePromise (zone.js:852)
    at Function.ZoneAwarePromise.reject (zone.js:944)
    at Storage.<anonymous> (Storage.js:227)
    at step (Storage.js:55)
    at Object.next (Storage.js:36)
    at Storage.js:30
    at new ZoneAwarePromise (zone.js:931)
    at push.../../node_modules/@aws-amplify/storage/lib-esm/Storage.js.__awaiter (Storage.js:26)
    at Storage.push.../../node_modules/@aws-amplify/storage/lib-esm/Storage.js.Storage.put (Storage.js:220)
    at RealtimeSessionService.push../src/app/services/realtime/realtime-session.service.ts.RealtimeSessionService.uploadFileTester (realtime-session.service.ts:355)

Любые предложения приветствуются, чтобы попытаться решить эту проблему . Я попытался воспроизвести это в новом проекте, но ошибки не регистрируются, и все вроде работает. В новом проекте просто используется

Amplify.configure(awsconfig);

С уважением и заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...