【问题标题】:Importing AWS SDK in Angular 2 Application在 Angular 2 应用程序中导入 AWS 开发工具包
【发布时间】:2017-05-07 17:06:54
【问题描述】:

我正在尝试在我的 Angular 2 应用程序中使用 AWS 开发工具包,但我遇到了困难。以下是我采取的步骤:

  1. 使用 npm install aws-sdk 将 aws sdk 安装到我的 Angular 2 应用程序中
  2. 使用npm install --save-dev @types/node 安装类型
  3. 尝试以几种不同的方式在我的 Angular 2 服务中包含 AWS 模块:declare var AWS: any;import AWS = require('aws-sdk');,最后是import * as AWS from 'aws-sdk';

当我尝试使用第一种和第三种类型的导入时,在我尝试访问 AWS 对象中的库之前,我没有收到转译器错误,即AWS.config.region = 'us-west-2 给了我错误';' expected.。当我尝试使用第二种方法时,我得到了错误:

以 ECMAScript 2015 为目标时无法使用导入分配 模块。考虑使用'import * as ns from "mod"', 'import {a} from "mod"'、'import d from "mod"' 或其他模块格式。)

我错过了一步吗?我查看了 github 项目https://github.com/awslabs/aws-cognito-angular2-quickstart/blob/master/src/app/service/aws.service.ts,但他们的项目没有解释他们是如何导入 SDK 的。

【问题讨论】:

    标签: javascript aws-sdk angular2-services


    【解决方案1】:

    你需要:

    npm install aws-sdk -S
    

    然后确保您已安装此类型(如果不确定,则只需运行以下代码):

    npm install --save-dev @types/node
    

    现在在您的 src 文件夹中,您将找到 tsconfig.app.ts(请确保不要与根目录下的 tsconfig.ts 混淆)。

    types 行是空的,在编辑之前看起来像这样:"types": []。你需要编辑它。 添加 "types": ["node"] 后 tsconfig.app.ts 应如下所示:

    {
      "extends": "../tsconfig.json",
      "compilerOptions": {
      "outDir": "../out-tsc/app",
      "module": "es2015",
      "baseUrl": "",
      "types": ["node"]
    },
    "exclude": [
      "test.ts",
      "**/*.spec.ts"
      ]
    }
    

    现在你可以

    import * as AWS from 'aws-sdk';
    

    【讨论】:

    • 重新启动“ng serve”后为我工作。谢谢!
    • 应用程序无法在 IE 11 中启动,我猜,添加“类型”:[“节点”]
    • 我收到了Uncaught ReferenceError: global is not defined 错误,我通过添加<script>var global = global || window;</script> 修复了这个错误,我想我们需要添加这个,因为aws-sdk 是用nodejs 编写的,所以我们需要定义global 变量。
    • 感谢@Rash,将该行添加到index.html 为我工作
    【解决方案2】:

    我目前正在使用 Angular 作为前端的 AWS,并且正在使用相同的 Angular cognito 快速入门项目进行身份验证和授权流程。

    为了安装,我用npm install aws-sdk --save

    aws-sdk 在我的 package.json 中处于依赖项下:

    "dependencies": {
        .......
        "aws-sdk": "^2.41.0",
        .......
    }
    

    如果您使用的是 angular cli,请确保将 aws-sdk 包含在您的 angular-cli.json

    在这些之后,我使用了declare var AWS: any; 并且我可以毫无问题地使用该库。

    【讨论】:

    • 所以这几乎可以工作,但我发现我仍然必须包含<script src="https://sdk.amazonaws.com/js/aws-sdk-2.50.0.min.js"></script>index.html。我错过了什么吗?我觉得我不应该把它放在索引中。
    • 您不需要将脚本包含在 index.html 中。确保在 angular-cli.json 中包含 sdk 后,通过 npm runng serve 重新运行项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多