Integration of aws-sdk in angular2 gives "Cannot find module stream"

I tried these

My typings and @ types / node seem to be set correctly. Here is the error information:

ERROR in / Users / ishandutta 2007 / Documents / Projects / myproj / node_modules / aws-sdk / lib / http_response.d.ts (1, 25): Cannot find the module 'stream'.) / Users / ishandutta 2007 / Documents / Projects / myproj / node_modules / aws-sdk / lib / http_response.d.ts (14,18): Cannot find the name "Buffer".)

tsconfig.json

{ "compileOnSave": false, "compilerOptions": { "outDir": "./dist/out-tsc", "baseUrl": "src", "sourceMap": true, "declaration": false, "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2016", "dom" ] } } 

package.json

 { "name": "reactvidsangular", "version": "0.0.0", "license": "MIT", "scripts": { "ng": "ng", "start": "webpack-dev-server --port=4200", "build": "webpack", "test": "karma start ./karma.conf.js", "lint": "ng lint", "e2e": "protractor ./protractor.conf.js", "prepree2e": "npm start", "pree2e": "webdriver-manager update --standalone false --gecko false --quiet" }, "private": true, "dependencies": { "@angular/common": "^2.4.0", "@angular/compiler": "^2.4.0", "@angular/core": "^2.4.0", "@angular/forms": "^2.4.0", "@angular/http": "^2.4.0", "@angular/platform-browser": "^2.4.0", "@angular/platform-browser-dynamic": "^2.4.0", "@angular/router": "^3.4.0", "@types/jasmine": "2.5.38", "@types/node": "^6.0.66", "angular2-social-login": "^2.1.0", "aws-sdk": "^2.32.0", "core-js": "^2.4.1", "jquery": "^3.2.1", "mystartup_commons": "bitbucket:ishan_dutta/mystartup_commons", "ng2-bootstrap": "^1.4.2", "rxjs": "^5.1.0", "zone.js": "^0.7.6" }, "devDependencies": { "@angular/cli": "1.0.0-rc.4", "@angular/compiler-cli": "^2.4.0", "autoprefixer": "^6.5.3", "codelyzer": "~2.0.0", "css-loader": "^0.26.1", "cssnano": "^3.10.0", "exports-loader": "^0.6.3", "file-loader": "^0.10.0", "istanbul-instrumenter-loader": "^2.0.0", "jasmine-core": "~2.5.2", "jasmine-spec-reporter": "~3.2.0", "json-loader": "^0.5.4", "karma": "~1.4.1", "karma-chrome-launcher": "~2.0.0", "karma-cli": "~1.0.1", "karma-coverage-istanbul-reporter": "^0.2.0", "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", "karma-sourcemap-loader": "^0.3.7", "less-loader": "^2.2.3", "postcss-loader": "^0.13.0", "postcss-url": "^5.1.2", "protractor": "~5.1.0", "raw-loader": "^0.5.1", "sass-loader": "^4.1.1", "script-loader": "^0.7.0", "source-map-loader": "^0.1.5", "style-loader": "^0.13.1", "stylus-loader": "^2.4.0", "ts-node": "~2.0.0", "tslint": "~4.5.0", "typescript": "~2.0.0", "url-loader": "^0.5.7", "webpack-dev-server": "~2.3.0" } } 

app.component.ts

 declare module 'aws-sdk' { var foo:any; export = foo; } import * as AWS from 'aws-sdk'; ....... ....... @Component({selector: 'app-basic', templateUrl: './app.component.html', styleUrls: ['./app.component.css']}) export class AppComponent { countReactions(myprefix) { var s3 = new AWS.S3(); var params = { Bucket: 'mybucket', Prefix: myprefix, }; s3.listObjectsV2(params, function (err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response } ); } } 
+7
angular amazon-web-services typescript typescript-typings tsconfig
source share
2 answers

Adding "node" to the type in the tsconfig.app.json file, which creates angular-cli in the src directory, as shown below:

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

Based on these TypeScript docs :

Specify "types": [] to disable the automatic inclusion of @types packages

Since the types are empty, this eliminates the node typing that you installed via npm install @ types / node.

+26
source share

I have found a solution for me.

You need to install the definitions for aws-sdk :

 npm install --save-dev @types/aws-sdk 

At that time, I got some errors about invalid peer dependencies on npm, but it worked anyway.

When compiling the application, another error may occur, stating that the import syntax used in aws-sdk is not compatible with ECMAScript2015. I had to change compilerOptions.module to "es5" instead of "es2015" in my tsconfig.app.json so that it would finally work.

+1
source share

All Articles