使用带有angular2的aws-sdk

Nic*_*cis 16 typescript aws-sdk angular

我正在尝试让我的Angular2应用程序允许我读取和写入我的AWS账户上的s3存储桶.

AngularJS(和大多数其他事情)我们使用了aws-sdk所以我假设也可以做同样的事情Angular2.

我遇到的问题是aws-sdk将正确导入到我的项目中.

我通过它安装了它 npm install aws-sdk

我试过用它导入它

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

但它一直告诉我该模块不存在.

我的项目基于angular2-seed.

我也尝试使用DefinitleyTyped安装打包文件,typings install aws-sdk但也失败了.

我不确定是否需要添加任何其他内容才能使其正常工作.

另外,我正在使用打字稿

感谢您的时间和帮助.

bas*_*rat 8

但它一直告诉我该模块不存在.

将TypeScript和aws-sdk更新为最新版本.在你的tsconfig中确保你有moduleResolution: node.现在你可以简单地做:

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


Nic*_*cis 8

来自NPM上的aws-sdk文档(https://www.npmjs.com/package/aws-sdk)

使用TypeScript

AWS SDK for JavaScript捆绑TypeScript定义文件,以便在TypeScript项目中使用,并支持可读取.d.ts文件的工具.我们的目标是保持这些TypeScript定义文件随每个版本更新为任何公共API.

先决条件 在开始在项目中使用这些TypeScript定义之前,您需要确保您的项目满足以下一些要求:

使用TypeScript v2.x
包含节点的TypeScript定义.您可以使用npm通过在终端窗口中键入以下内容来安装它:

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

tsconfig.jsonjsconfig.json包括compilerOptions.lib下的'dom'和'es2015.promise'.请参阅tsconfig.json示例.

在浏览器中
要在前端项目中将TypeScript定义文件与全局AWS对象一起使用,请将以下行添加到要打算使用它的JavaScript或Typescript文件的顶部,或将其添加到tsconfig"types"或声明文件:

/// <reference types="aws-sdk" /> 
Run Code Online (Sandbox Code Playgroud)

这将为全局AWS对象提供支持.

上一个答案
我发现如果我添加

{ src: 'aws-sdk/dist/aws-sdk', inject: 'libs' } 
Run Code Online (Sandbox Code Playgroud)

到project.config.ts中的additional_deps(如果你使用angular2-seed)或者只是添加

<script src="/node_modules/aws-sdk/dist/aws-sdk.js"></script>
Run Code Online (Sandbox Code Playgroud)

到你的index.html然后我可以添加

declare const AWS: any;
Run Code Online (Sandbox Code Playgroud)

对于我需要的任何.ts文件,我可以访问AWS对象.但是不确定这是否是一个好的解决方案.


p43*_*027 5

1) 请通过添加以下内容来更新/src/polyfills.ts

// aws-sdk requires global to exist
(window as any).global = window;
Run Code Online (Sandbox Code Playgroud)

2) 然后使用以下内容更新位于/src/tsconfig.app.json 中的compilerOptions对象:

"types": ["node"]
Run Code Online (Sandbox Code Playgroud)

3)安装aws-sdk:

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

4) 现在您应该可以在 *.ts 文件中使用 AWS SDK:

    import * as AWS from 'aws-sdk';
    ...
    export class YourComponent implements OnInit {
      constructor() { }

      ngOnInit() {
      }

      doSmthingWithAwsSdk(){
         AWS.config.credentials = new AWS.Credentials(accessKeyId, secretAccessKey, sessionToken);
         AWS.config.region = region;
         // do something
      }
     ...
    }
Run Code Online (Sandbox Code Playgroud)

5)不要硬编码您的凭据,请查看在 Web 浏览器中设置凭据以获取更多信息,谢谢