如何在Aurelia中使用Amazon Cognito Identity SDK?

Nat*_*one 8 amazon-cognito aurelia aurelia-cli

我试图让Aurelia中的Amazon Cognito Identity SDK正常工作.我没有很多Javascript经验,并且对各种依赖系统非常不熟悉.

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

然后,我aurelia_project/aurelia.json按照Aurelia文档中的建议编辑了我的文件,以在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"
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用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"]
  },
Run Code Online (Sandbox Code Playgroud)

而我目前得到的错误:

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所要求的.

jsa*_*chs 6

尝试编译库,使用捆绑编译的lib就好了.图书馆似乎也在定义window.AWS,因此注入或不注入都可行

{
    "name": "aws-sdk",
    "path": "../node_modules/aws-sdk/dist",
    "main": "aws-sdk.min",
    "exports": "AWS"
}
Run Code Online (Sandbox Code Playgroud)

更新:

似乎导入这些库的唯一方法是使用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"
    ],
Run Code Online (Sandbox Code Playgroud)