2016-05-05 14 views
12

के साथ aws-sdk का उपयोग करके मैं अपने 0Wऐप को प्राप्त करने की कोशिश कर रहा हूं ताकि मुझे अपने एडब्ल्यूएस खाते पर एस 3 बाल्टी पढ़ने और लिखने की अनुमति मिल सके।angular2

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' 

का उपयोग कर इसे आयात करने के लिए कोशिश की है यह स्थापित किया है, लेकिन यह मुझे बता कि मॉड्यूल मौजूद नहीं है रहता है।

मेरी परियोजना कोणीय 2-बीज से आधारित है।

मैंने typings install aws-sdk का उपयोग करके DefinitleyTyped से टाइपिंग फ़ाइल को स्थापित करने का भी प्रयास किया लेकिन यह भी असफल रहा।

मुझे यकीन नहीं है कि मुझे काम करने के लिए कुछ और जोड़ने की आवश्यकता है या नहीं।

इसके अलावा, मैं टाइपप्रति उपयोग कर रहा हूँ

अपना समय और सहायता के लिए धन्यवाद।

+1

एडब्ल्यूएस से आधिकारिक टाइपस्क्रिप्ट जल्द ही आ रहा है ... उम्मीद है कि ... https://github.com/aws/aws-sdk-js/issues/994 –

उत्तर

6

NPM पर एडब्ल्यूएस-sdk डॉक्स से टाइपप्रति

साथ ( https://www.npmjs.com/package/aws-sdk)

प्रयोग

जावास्क्रिप्ट के लिए एडब्ल्यूएस एसडीके बंडल टाइपप्रति टाइपस्क्रिप्ट परियोजनाओं में उपयोग के लिए परिभाषा फाइलें और .d.ts फ़ाइलों को पढ़ने वाले टूल का समर्थन करने के लिए। हमारा लक्ष्य इन टाइपस्क्रिप्ट परिभाषा फ़ाइलों को किसी भी सार्वजनिक एपीआई के लिए प्रत्येक रिलीज के साथ अद्यतन रखना है।

पूर्व आवश्यक वस्तुएँ इससे पहले कि आप अपनी परियोजना के साथ इन टाइपप्रति परिभाषाओं का उपयोग शुरू कर सकते हैं, आप सुनिश्चित करें कि आपके परियोजना इन आवश्यकताओं के कुछ ही मिलता है बनाने की जरूरत है:

उपयोग टाइपप्रति v2.x
शामिल नोड के लिए टाइपस्क्रिप्ट परिभाषाएं। आप एक टर्मिनल विंडो में निम्न लिखकर इस स्थापित करने के लिए NPM उपयोग कर सकते हैं:

npm install --save-dev @types/node 

आपका tsconfig.json या jsconfig.json 'डोम' और compilerOptions.lib के तहत 'es2015.promise' भी शामिल है। उदाहरण के लिए tsconfig.json देखें।

ब्राउज़र
सामने के अंत की परियोजना में वैश्विक एडब्ल्यूएस वस्तु के साथ टाइपप्रति परिभाषा फ़ाइलों का उपयोग करने के लिए, जहां आप इसे का उपयोग करें या जोड़ने का इरादा अपने जावास्क्रिप्ट या टाइपप्रति फ़ाइल के शीर्ष में निम्नलिखित पंक्ति जोड़ में यह आपके tsconfig 'प्रकार' या घोषणा करने के लिए फ़ाइल:

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

यह वैश्विक एडब्ल्यूएस वस्तु के लिए सहायता प्रदान करेगा।

पिछला जवाब
मैंने पाया है कि अगर मैं project.config.ts में

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

जोड़ा (अपने angular2-बीज का उपयोग करता है, तो) या बस जोड़ने

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

आपके index.html पर मैं

declare const AWS: any; 
जोड़ सकता था

किसी भी .ts फ़ाइलों की मुझे आवश्यकता है, मेरे पास AWS ऑब्जेक्ट तक पहुंच है। हालांकि यह सुनिश्चित नहीं है कि यह एक अच्छा समाधान है।

+0

में लोड की गई है, मैं कोणीय-क्ली का उपयोग कर रहा हूं, मुझे project.config.ts फ़ाइल नहीं मिल सकती है –

+0

मैं आपको "जावास्क्रिप्ट फ़ाइल का शीर्ष" कहां पा सकता हूं "... मेरे पास कोई नहीं है, 'कारण, मैं टाइपस्क्रिप्ट का उपयोग कर रहा हूं ... – genuinefafa

+0

इसे एक टाइपस्क्रिप्ट फ़ाइल में भी डाल सकता है, जो ठीक काम करता है। –

2

लेकिन यह मुझे बताता रहता है कि मॉड्यूल मौजूद नहीं है।

टाइपस्क्रिप्ट मॉड्यूल के बारे में नहीं जानता है और ऐसा लगता है कि अच्छी परिभाषा मौजूद नहीं है। त्वरित सुधार:

declare module 'aws-sdk' { 
    var foo:any; 
    export = foo; 
} 

तो फिर तुम क्या कर सकते हैं

import * as AWS from 'aws-sdk', 
+0

मेरी समझ के लिए, क्या यह मूल रूप से बस टाइपस्क्रिप्ट को सोचने में चाल करता है कि आयात करने के लिए एक aws-sdk टाइपिंग फ़ाइल है (या बल्कि यह एक टाइपिंग फ़ाइल बनाने की शुरुआत है, यह prefills और whatnot का उपयोग करने के लिए वास्तविक aws-sdk के लिए कुछ भी उपयोगी नहीं होगा) –

+0

मॉड्यूल घोषित करें 'aws-sdk' { var foo: कोई भी; निर्यात = foo; } यह कहां लिखना है? –

+0

आप इसे कहीं भी लिखेंगे जहां आप टाइप परिभाषाएं घोषित करते हैं। कई मामलों में यह एक फ़ाइल होगी जो tsconfig फ़ाइलों सरणी –

1

मैं भी कोणीय 2 (कोणीय क्ली जेनरेट) परियोजना के साथ aws-sdk का उपयोग करने का प्रयास करता हूं। मैं ब्राउज़र में libs को सही लोड करने में सक्षम नहीं था।

एंग्लुअर दस्तावेज़ के अनुसार मैं aws libaries (https://github.com/angular/angular-cli/wiki/3rd-party-libs#adding-underscore-library-to-your-project) आयात किया गया था।

इस इस तरह दिखता है:

संपादित package.json स्थानीय सिस्टम को NPM से जे एस फ़ाइल को लोड करने

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

संपादित angluar-CLI-build.js के निर्माण की प्रक्रिया के दौरान एडब्ल्यूएस जे एस फ़ाइलों की प्रतिलिपि बनाना सिस्टम-config.ts में

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

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

संपादित करें मानचित्र अनुभाग जिले के विक्रेता फ़ोल्डर गंतव्य फ़ाइल पर नाम स्थान मैप करने के लिए

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

मेरी टाइपस्क्रिप्ट फ़ाइल में मैं एडब्ल्यूएस libs आयात करने का प्रयास करता हूं।

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

@Injectable() 
export class MyService { 

    public myMethod() { 
     var s3 = new AWS.S3(); 
     ... 
     ... 
     ... 

इस टाइपप्रति संकलक के लिए सब ठीक है, स्रोत फ़ाइल भी ब्राउज़र में लोड किया जाता है लेकिन ऐसा लगता है त्रुटि हो "S3 एक निर्माता नहीं है"।

यदि आप सामान को डीबग करते हैं तो आप देखेंगे कि एडब्ल्यूएस सामान ठीक से शुरू किया गया है, लेकिन "आयात * के बाद 'aws-sdk' से AWS के रूप में आयात किया जाता है" var AWS को कुछ पागल ऑब्जेक्ट के साथ प्रारंभ किया जाता है।

मेरी समाधान वजह है:

संपादित package.json स्थानीय सिस्टम

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

संपादित angluar-CLI-निर्माण करने के लिए NPM से जे एस फ़ाइल को लोड करने।निर्माण प्रक्रिया के दौरान एडब्ल्यूएस जे एस फ़ाइलों की प्रतिलिपि बनाने js जिले के फ़ोल्डर विक्रेता के लिए स्क्रिप्ट का

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

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

ऐड आयात

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

index.html पर अंत में आपकी सेवा

// 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 बिल्ड प्रक्रिया का उपयोग करें, एनपीएम पैकेज प्रबंधन का उपयोग करें, लेकिन एडब्ल्यूएस टाइपस्क्रिप्ट प्रकार परिभाषाओं का उपयोग न करें।