如何在Typescript中实现aws.sdk.ts文件?

时间:2016-08-08 17:56:35

标签: javascript amazon-web-services amazon-s3 typescript

我尝试在mainmodule.ts文件中使用aws-sdk.ts文件。但得到未定义的错误。

/// <reference path="aws.sdk.ts" />
import * as AWS from 'aws.sdk';
var typeScriptViewModel = function (first, last) {
    var self = this;
    AWS.Config({
        accessKeyId: 'ABC',
        secretAccessKey: 'ABCSECRET'
    });

    AWS.config.region = 'us-east-1'; 

   // many more usage of AWS. but got stuck on the first implementation itself.
   //var bucket = new AWS.S3({
   //         params: {
   //             Bucket: bucketName, Prefix: path, Delimiter: '/'
   //         }
   //     });
}

它抛出一个错误,说&#34; Uncaught TypeError:无法读取属性&#39; Config&#39;未定义&#34;。

任何人都可以指导我如何使用aws.sdk.ts使用s3桶吗? 我是打字稿中的新手。

3 个答案:

答案 0 :(得分:0)

不完全确定这是问题,但您的参考应该是:

/// <reference path="aws.sdk.d.ts" />

而不是:

/// <reference path="aws.sdk.ts" />

然后你就可以导入:

import * as AWS from 'aws.sdk';

确保您已安装两种类型定义:

$ typings install --global --save dt~aws-sdk

和npm模块:

$ npm install --save aws-sdk

更新

您的awsdemo文件夹之外有typings.json,但您还使用packages.config(Visual Studio管理.d.ts文件的方式):

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="aws-sdk.TypeScript.DefinitelyTyped" version="1.9.4" targetFramework="net451" />
  <package id="node.TypeScript.DefinitelyTyped" version="3.0.0" targetFramework="net451" />
  <package id="RequireJS" version="2.2.0" targetFramework="net451" />
  <package id="requirejs.TypeScript.DefinitelyTyped" version="0.4.3" targetFramework="net451" />
</packages>

您无法使用nuget和typings来使用其中一种。

我建议你按照official tutorial进行操作。本教程解释了如何安装angular ignore该部分并安装aws-sdk。 (您可能还需要教程中提到的es6-shim)。

答案 1 :(得分:0)

有许多声明文件(.d.ts)可供使用,但我们假设您使用以下声明文件:

https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/aws-sdk

你可以这样做:

import * as AWS from 'aws-sdk';
var typeScriptViewModel = function (first, last) {
    const options = {
        accessKeyId: 'ABC',
        secretAccessKey: 'ABCSECRET',
        region: "us-east-1"
    };
    let s3 = new AWS.S3(options);

    // many more usage of AWS here
    // (http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html)
    let params = {
        Bucket: 'STRING_VALUE' /* required */
    };
    s3.getBucketLocation(params, (err, data) => {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response
    });
}

答案 2 :(得分:0)

在角度或离子项目中运行:

npm install aws-sdk --save

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

npm install --save-dev @types/node