【问题标题】:How can I get the Amazon Cognito Identity SDK working in Aurelia?如何让 Amazon Cognito 身份开发工具包在 Aurelia 中工作?
【发布时间】:2016-09-27 00:44:01
【问题描述】:

我正在尝试让 Amazon Cognito 身份开发工具包在 Aurelia 中运行。我没有太多的 Javascript 经验,对各种依赖系统非常陌生。

我使用以下方式安装了 Cognito SDK:npm install --save amazon-cognito-identity-js

然后我按照 Aurelia 文档中的建议编辑了我的 aurelia_project/aurelia.json 文件,以在 build.bundles 供应商捆绑依赖项中包含一个新的客户端库依赖项:

"sjcl",
"jsbn",
{
  "name": "aws-sdk",
  "path": "../node_modules/aws-sdk/",
  "main": "dist/aws-sdk"
},
{
  "name": "amazon-cognito-identity-js",
  "path": "../node_modules/amazon-cognito-identity-js/dist",
  "main": "amazon-cognito-identity.min"
}

但是,当我尝试使用 au run 运行代码时,出现错误:Error: ENOENT: no such file or directory, open '/Users/nathanskone/Projects/scc/aurelia-app/src/xmlbuilder.js'

我试图在我的 aurelia.json 中包含 xmlbuilder 无济于事。当包含它时,我最终会收到有关 lodash 的错误:Error: ENOENT: no such file or directory, open '/Users/nathanskone/Projects/scc/aurelia-app/src/lodash/object/assign.js'

我还没有找到解决 lodash 错误的方法。

有没有熟悉 Aurelia 依赖系统的人可以提供帮助?

谢谢, 内森

编辑#2:虽然我克服了 xmlbuilder/lodash 错误,但在尝试捆绑 aws-sdk 时遇到了更多错误。这是我当前的 aurelia.json:

"dependencies": [
  {
    "name": "xmlbuilder",
    "path": "../node_modules/xmlbuilder/lib",
    "main": "index"
  },
  {
    "name": "aws-sdk",
    "path": "../node_modules/aws-sdk",
    "main": "index",
    "resources": ["lib/region_config.json"]
  },

我目前遇到的错误:

Error: ENOENT: no such file or directory, open '/Users/nathanskone/Projects/scc/aurelia-app/src/crypto.js'

如果我删除资源 (lib/region_config.json),则会收到此错误: Error: ENOENT: no such file or directory, open '/Users/nathanskone/Projects/scc/aurelia-app/node_modules/aws-sdk/lib/region_config.json.js'

我认为crypto其实是在aws-sdk/lib/util.js中定义的一个对象,这是aws-sdk/lib/region_config.js所需要的。

【问题讨论】:

    标签: amazon-cognito aurelia


    【解决方案1】:

    改用编译库,使用捆绑的编译库就好了。 此外,该库似乎定义了window.AWS,因此注入或不注入都会起作用

    {
        "name": "aws-sdk",
        "path": "../node_modules/aws-sdk/dist",
        "main": "aws-sdk.min",
        "exports": "AWS"
    }
    

    更新:

    似乎导入这些库的唯一方法是使用 prepend 部分,这些库写入窗口变量,以便您的应用脚本仍然可以访问它,只是不像 ES6 模块那样导入它们。

        "prepend": [
          "node_modules/aws-sdk/dist/aws-sdk.min.js",
          "node_modules/amazon-cognito-identity-js/dist/aws-cognito-sdk.min.js",
          "node_modules/amazon-cognito-identity-js/dist/amazon-cognito-identity.min.js",
          "node_modules/bluebird/js/browser/bluebird.core.js",
          "scripts/require.js"
        ],
    

    【讨论】:

    • 这确实适用于 AWS-SDK,但是一旦我添加了 amazon-cognito-identity-js,它就会再次抱怨 Error: ENOENT: no such file or directory, open '/Users/nathanskone/Projects/scc/aurelia-app/node_modules/aws-sdk/lib/region_config.json.js'
    • 做到了!尽管我还必须将 jsbn 和 sjcl 添加到 prepend 部分,因为它们都是 Amazon Cognito SDK 所必需的。
    猜你喜欢
    • 2016-11-21
    • 2016-12-04
    • 2016-09-17
    • 1970-01-01
    • 2017-03-23
    • 2019-02-20
    • 1970-01-01
    • 2017-06-02
    • 2013-01-28
    相关资源
    最近更新 更多