amazon-web-services - 根据示例配置时,节点环境中的 AWS AppSync 会出现有关 asyncLocalStorage 的错误

标签 amazon-web-services aws-appsync

已关注 the example provided in the docs我发现以下消息在日志中重复多次:

redux-persist asyncLocalStorage requires a global localStorage object. Either use a different storage backend or if this is a universal redux application you probably should conditionally persist like so: https://gist.github.com/rt2zz/ac9eb396793f95ff3c3b

我可以通过在创建 AppSync 客户端时关闭离线支持来解决这个问题,如下所示:

new AWSAppSyncClient({
  url: 'https://...appsync-api.us-west-2.amazonaws.com/graphql',
  region: 'us-west-2',
  auth: {
    type: 'AWS_IAM',
    credentials: ...
  },
  disableOffline: true
})

...但是我确实想使用线下商店。我正在使用文档中的设置配置,如下所示:

global.WebSocket = require('ws');
global.window = global.window || {
    setTimeout: setTimeout,
    clearTimeout: clearTimeout,
    WebSocket: global.WebSocket,
    ArrayBuffer: global.ArrayBuffer,
    addEventListener: function () { },
    navigator: { onLine: true }
};
global.localStorage = {
    store: {},
    getItem: function (key) {
        return this.store[key]
    },
    setItem: function (key, value) {
        this.store[key] = value
    },
    removeItem: function (key) {
        delete this.store[key]
    }
};
require('es6-promise').polyfill();
require('isomorphic-fetch');

但它似乎不适用于 AppSync 客户端中几层深处使用的 redux-persist

最佳答案

我找到了一个非常简单的方法来解决这个问题。虽然本节直接取自 AWS 文档,但并不完全正确:

global.localStorage = {
    store: {},
    ...
};

通过设置 global.window.localStorage 我可以解决这些问题:

global.window.localStorage = {
    store: {},
    ...
};

任何其他尝试像这样使用 AppSync 的人可能想知道 node-localstorage 似乎也适用于这种用法(在 yarn add node-localstorage 之后):

var LocalStorage = require('node-localstorage').LocalStorage
global.window.localStorage = new LocalStorage(<path for storage>)

重要的是,在这种情况下,您的查询将保留到文件系统中,并且在连接丢失时将被读取。重新启动应用程序后,这可能会起作用(但我尚未对此进行测试,因为您需要 AWS 凭证对象来创建 AppSync 客户端)。

关于amazon-web-services - 根据示例配置时,节点环境中的 AWS AppSync 会出现有关 asyncLocalStorage 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51353684/

相关文章:

amazon-web-services - AWS AppSync WebUI 非常慢

amazon-web-services - 设置前出现Vagrant Rsync错误

amazon-web-services - AWS WAF 如何将 IP 路径的速率限制为低于 2000 个请求/分钟

python - 在 AWS lambda 和 API 网关中部署 Flask sqlalchemy 应用程序

amazon-web-services - AWS GLUE 导入 xls/xlsx 文件

reactjs - 如何在 AWS Amplify/AppSync React 应用程序中正确处理未经身份验证的用户和请求?

amazon-web-services - EC2上的运行Expect脚本挂起,但是在手动调用时成功运行

aws-lambda - AWS Appsync从Lambda调用变异吗?

amazon-web-services - 数据存储 - 架构未初始化。 DataStore 将无法按预期运行

aws-appsync - 如何在 vtl appsync 解析器中重用/导入代码?