比较来自世界各地的卖家的域名和 IT 服务价格

使用 aws-sdk 和 angular2

我正在努力强迫我的申请
Angular2

让我读和写信给篮子 s3 在我的帐户上 AWS.


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'


但他继续告诉我模块不存在。

我的项目是基于 angular2-seed.

我也试图安装文件 typings 的 DefinitleyTyped 通过
typings install aws-sdk

, 但它也失败了。

我不确定我是否需要添加别的东西,以便它工作,与否。

另外,我使用 typescript

谢谢你的时间和帮助。
已邀请:

郭文康

赞同来自:

但他继续告诉我模块不存在。

更新 TypeScript 和 aws-sdk 直到最新版本。 在你的 tsconfig 确保你有
moduleResolution: node

. 现在你可以做:


import * as AWS from 'aws-sdk';

龙天

赞同来自:

来自文件 aws-sdk 上 NPM /
https://www.npmjs.com/package/aws-sdk
/

用法 TypeScript

AWS SDK 为了 JavaScript 绑定定义文件 TypeScript 用于项目 TypeScript 并支持可以读取文件的工具 .d.ts. 我们的目标是制作这些定义文件。 TypeScript 对任何公众的每个版本更新 api.

先决条件

在您开始使用这些定义之前。 TypeScript 在您的项目中,您需要确保您的项目符合以下几种要求:

采用 TypeScript v2.x

包括定义 TypeScript 节点。 您可以使用 npm 要通过输入以下窗口进行安装 terminal:


npm install --save-dev @types/node


你的
tsconfig.json

或者
jsconfig.json

包括 'dom' 和 " es2015.promise " 在下面 compilerOptions.lib. 看例
tsconfig.json

.

在浏览器中

要使用定义文件 TypeScript 与全球对象 AWS 在接口项目中,将以下行添加到文件的开头。 JavaScript 或者 Typescript, 您将在哪里使用它,或将其添加到文件中 tsconfig 'types' 或广告:


/// <reference types="aws-sdk"></reference>


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

以前的答案

如果我补充说,我找到了它


{ src: 'aws-sdk/dist/aws-sdk', inject: 'libs' }


到 additional_deps 在 project.config.ts /如果您正在使用 angular2-seed/ 或者只是添加


<script src="/node_modules/aws-sdk/dist/aws-sdk.js"></script>


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


declare const AWS: any;


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

龙天

赞同来自:

1/ 请更新

/src/polyfills.ts

, 通过增加:


// aws-sdk requires global to exist
/window as any/.global = window;


2/ 然后更新

一个东西 compilerOptions, 位于B.

/src / tsconfig.app.json

, 通过:


"types": ["node"]


3/ 安装 aws-sdk:


npm install aws-sdk


4/ 现在你应该能够使用 AWS SDK 在您的文件中*。 ts:


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
}
...
}


5/

不是

硬编码您的凭据,检查
https://docs.aws.amazon.com/sd ... .html
有关更多信息,请谢谢

喜特乐

赞同来自:

我也尝试使用 aws-sdk 与项目 angular 2 /angular CLI generated/. 我无法在浏览器中正确下载库。

根据该文件 angluar, 我导入了库 aws /
https://github.com/angular/ang ... oject
/.

它看起来像这样:

编辑 package.json, 下载文件 JS 的 NPM 到当地系统


{
...
"dependencies": {
"aws-sdk": "git://github.com/aws/aws-sdk-js.git#support/typescript"
},
...
}


编辑 angluar-cli-build.js, 复制文件 aws JS 在供应商文件夹中的装配过程中 dist


var Angular2App = require/'angular-cli/lib/broccoli/angular2-app'/;

module.exports = function/defaults/ {
return new Angular2App/defaults, {
vendorNpmFiles: [
...
'aws-sdk/**/*.js'
]
}/;
};


部分编辑映射在system-config.ts以将命名空间匹配到目标文件


const map: any = {
'aws-sdk': 'vendor/aws-sdk/dist/aws-sdk.js'
};


在我的文件中 typescript 我正在尝试导入库 AWS.


...
import * as AWS from 'aws-sdk';
...

@Injectable//
export class MyService {

public myMethod// {
var s3 = new AWS.S3//;
...
...
...


这一切都适用于编译器 typescript, 源文件也加载到浏览器中,但它导致错误类型 "S3 is not a constructor".

如果您辩论材料,您将看到材料 AWS 正常初始化,但执行后 "import * as AWS from 'aws-sdk'" var AWS 一些疯狂的对象初始化。

所以我的决定是

:

编辑 package.json, 下载文件 JS 的 NPM 到当地系统


{
...
"dependencies": {
"aws-sdk": "git://github.com/aws/aws-sdk-js.git#support/typescript"
},
...
}


编辑 angluar-cli-build.js, 复制文件 aws JS 在供应商文件夹中的装配过程中 dist


var Angular2App = require/'angular-cli/lib/broccoli/angular2-app'/;

module.exports = function/defaults/ {
return new Angular2App/defaults, {
vendorNpmFiles: [
...
'aws-sdk/**/*.js'
]
}/;
};


添加导入脚本 index.html


<script src="/vendor/aws-sdk/dist/aws-sdk.js" type="text/javascript"></script>


最后在你的部门使用它


// make AWS as 'any' available for typescript compiler
declare var AWS:any;

@Injectable//
export class MyService {

public myMethod// {
var s3= new AWS.S3//;
...
...
...


这是一种混合的方式。 使用装配过程 Angluar 2, 使用包管理 NPM, 但不要使用类型的定义 AWS typescript.

要回复问题请先登录注册