Моя цель - использовать AWS Amplify в проекте Sapper.
Создание проекта Sapper с нуля (с использованием webpack), затем добавление AWS Amplify и его запуск в dev - это успех, но запуск его в производственной среде вызывает ошибку GraphQL в консоли (Неперехваченная ошибка: невозможно использовать e "__Schema" из другого модуль или область).
Исправление этой ошибки показывает другую (Uncaught ReferenceError: процесс не определен).
Решение состоит в том, чтобы обновить GraphQL с 0.13.0 до 14.0.0, к сожалению, GraphQL 0.13.0 является зависимостью API AWS Amplify.
Кто-нибудь знает, что можно сделать, чтобы заставить AWS Amplify работать с Sapper в производственной среде?
Ссылка на репо, содержащее исходные файлы, находится здесь: https://github.com/ehemmerlin/sapper-aws-amplify
(Прошу прощения за длинный пост, но я хочу быть откровенным)
Подробные инструкции
1 / Создайте проект Sapper с помощью webpack (https://sapper.svelte.dev).
npx degit "sveltejs/sapper-template#webpack" my-app
cd my-app
yarn install
2 / Добавить AWS Amplify (https://serverless-stack.com/chapters/configure-aws-amplify.html) и lodash
yarn add aws-amplify
yarn add lodash
3 / Настройте AWS Amplify (https://serverless-stack.com/chapters/configure-aws-amplify.html)
Создайте файл конфигурации src / config / aws.js, содержащий (измените значения на ваши, но работает как есть для целей этого сообщения):
export default {
s3: {
REGION: "YOUR_S3_UPLOADS_BUCKET_REGION",
BUCKET: "YOUR_S3_UPLOADS_BUCKET_NAME"
},
apiGateway: {
REGION: "YOUR_API_GATEWAY_REGION",
URL: "YOUR_API_GATEWAY_URL"
},
cognito: {
REGION: "YOUR_COGNITO_REGION",
USER_POOL_ID: "YOUR_COGNITO_USER_POOL_ID",
APP_CLIENT_ID: "YOUR_COGNITO_APP_CLIENT_ID",
IDENTITY_POOL_ID: "YOUR_IDENTITY_POOL_ID"
}
};
Добавьте следующий код к существующему коду в src / client.js:
import config from './config/aws';
Amplify.configure({
Auth: {
mandatorySignIn: true,
region: config.cognito.REGION,
userPoolId: config.cognito.USER_POOL_ID,
identityPoolId: config.cognito.IDENTITY_POOL_ID,
userPoolWebClientId: config.cognito.APP_CLIENT_ID
},
Storage: {
region: config.s3.REGION,
bucket: config.s3.BUCKET,
identityPoolId: config.cognito.IDENTITY_POOL_ID
},
API: {
endpoints: [
{
name: "notes",
endpoint: config.apiGateway.URL,
region: config.apiGateway.REGION
},
]
}
});
4 / Проверьте это
В dev (yarn run dev): работает
В производстве (сборка пряжи; узел __sapper __ / build): выдает ошибку.
Uncaught Error: Cannot use e "__Schema" from another module or realm.
Ensure that there is only one instance of "graphql" in the node_modules
directory. If different versions of "graphql" are the dependencies of other
relied on modules, use "resolutions" to ensure only one version is installed.
https://yarnpkg.com/en/docs/selective-version-resolutions
Duplicate "graphql" modules cannot be used at the same time since different
versions may have different capabilities and behavior. The data from one
version used in the function from another could produce confusing and
spurious results.
5 / Исправить
По указанной ссылке (https://yarnpkg.com/en/docs/selective-version-resolutions) Я добавил этот код в файл package.json:
"resolutions": {
"aws-amplify/**/graphql": "^0.13.0"
}
6 / Проверьте это
rm -rf node_modules; yarn install
Выдает очередную ошибку в консоли (даже в режиме разработки).
Uncaught ReferenceError: process is not defined
at Module../node_modules/graphql/jsutils/instanceOf.mjs (instanceOf.mjs:3)
at \_\_webpack_require\_\_ (bootstrap:63)
at Module../node_modules/graphql/type/definition.mjs (definition.mjs:1)
at \_\_webpack_require\_\_ (bootstrap:63)
at Module../node_modules/graphql/type/validate.mjs (validate.mjs:1)
at \_\_webpack_require\_\_ (bootstrap:63)
at Module../node_modules/graphql/graphql.mjs (graphql.mjs:1)
at \_\_webpack_require\_\_ (bootstrap:63)
at Module../node_modules/graphql/index.mjs (main.js:52896)
at \_\_webpack_require\_\_ (bootstrap:63)
Исправление, данное этой веткой (https://github.com/graphql/graphql-js/issues/1536) заключается в обновлении GraphQL с 0.13.0 до 14.0.0, к сожалению, GraphQL 0.13.0 является зависимостью API AWS Amplify.
@aws-amplify/api
и обновлять егоgraphql
зависимость до 14.x.x? Возможно, стоит попробовать в целях тестирования, посмотрите, не сломается ли что-нибудь еще. А если нет, и это решит вашу проблему, возможно, рассмотрите возможность подачи PR. - person Thomas Hennes   schedule 15.10.2019