在Angular 2应用程序中导入AWS SDK

use*_*030 6 javascript aws-sdk angular2-services

我试图在我的Angular 2应用程序中使用AWS SDK,但是我很困难.以下是我采取的步骤:

  1. 使用将aws sdk安装到我的Angular 2应用程序中 npm install aws-sdk
  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.

And*_*ndy 10

你需要:

npm install aws-sdk -S
Run Code Online (Sandbox Code Playgroud)

然后确保安装了这种类型(如果你不确定,那么只需运行下面的代码):

npm install --save-dev @types/node
Run Code Online (Sandbox Code Playgroud)

现在在你的src文件夹中,你会发现tsconfig.app.ts(确保不要tsconfig.ts在根目录下混淆).

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

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

现在你可以

import * as AWS from 'aws-sdk';
Run Code Online (Sandbox Code Playgroud)

  • 我收到了“未捕获的ReferenceError:未定义全局”错误,我通过添加`<script> var global = global ||来解决。window; </ script>`我想我们需要添加它,因为aws-sdk是考虑到nodejs编写的,因此我们需要定义`global`变量。 (2认同)

小智 2

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

对于安装,我使用了npm install aws-sdk --save

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

"dependencies": {
    .......
    "aws-sdk": "^2.41.0",
    .......
}
Run Code Online (Sandbox Code Playgroud)

如果您使用 Angular cli,请确保将 aws-sdk 包含到Angular-cli.json中

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