Как реализовать файл aws.sdk.ts в Typescript?

Я попытался использовать файл aws-sdk.ts в файле mainmodule.ts ниже. Но получение ошибки undefined.

/// <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: '/'
 // }
 // });
}
</reference>

Он выдает сообщение об ошибке "Uncaught TypeError: невозможно прочитать свойство" Config "из undefined".

Может ли кто-нибудь указать мне, как использовать ведро s3 с помощью aws.sdk.ts? Я новичок в Typescript.

3 ответа

В вашем проекте angular или ионном проекте:

npm install aws-sdk --save

Прежде чем вы сможете использовать эти определения TypeScript в своем проекте, вам необходимо убедиться, что ваш проект соответствует нескольким из этих требований:

npm install --save-dev @types/node


Не совсем уверен, что это проблема, но ваша ссылка должна быть:

///

Вместо:

///

Затем вы сможете импортировать:

import * as AWS from 'aws.sdk';

Убедитесь, что вы установили оба определения типов:

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

И модуль npm:

$ npm install --save aws-sdk

Update

У вас typings.json вне вашей папки awsdemo, но вы также используете 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></package></package></packages>

Вы не можете использовать nuget и typings, вам нужно использовать один из двух.

Я бы порекомендовал вам следовать официальному учебнику . В учебнике объясняется, как установить angular игнорировать эту часть и вместо этого установить aws-sdk. (Возможно, вам понадобится также es6-shim, упомянутый в учебнике).


Есть много файлов декларации (.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
 });
}

licensed under cc by-sa 3.0 with attribution.