如何让 Amazon Cognito Identity SDK 在 Aurelia 中运行?

How can I get the Amazon Cognito Identity SDK working in Aurelia?

我正在尝试让 Amazon Cognito Identity SDK 在 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'

我曾尝试将 xmlbuilder 添加到我的 aurelia.json 中,但没有成功。当它包含在内时,我最终收到关于 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.

需要的

尝试编译库,使用捆绑的编译库就好了。 此外,库似乎定义了 window.AWS,因此注入或不注入都有效

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

更新:

似乎导入这些库的唯一方法是使用前置部分,库写入 window 变量,因此您的应用程序脚本仍然可以访问它,只是不像 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"
    ],