2016-06-16 14 views
8

फ़ाइलसेवर में तृतीय पक्ष जावास्क्रिप्ट आयात करना किसी कारण से मैप नहीं हो रहा है। कोणीय 2-jwt ठीक काम कर रहा है।कोणीय 2 - SystemJS

मैं npm install file-saver -save किया फ़ाइल बचाने पाने के लिए तो यह संदर्भित इस प्रकार है (मैं निर्देशिका libs को js फ़ाइल स्थानांतरित करने के लिए एक घूंट काम है और मैं वहाँ फ़ाइल देखें)

index.htmlI में

स्क्रिप्ट को शामिल किया है src और system.config

<script src="libs/file-saver/FileSaver.js"></script> 

<!-- 2. Configure SystemJS --> 
    <script> 
     System.config({ 
     packages: {   
      app: { 
      format: 'register', 
      defaultExtension: 'js' 
      } 
     } , 
     map: { 
      "angular2-jwt": "libs/angular2-jwt/angular2-jwt.js" 
      ,"fileSaver":"libs/file-saver/FileSaver.js" 
     } 
     }); 
     System.import('app/bootstrap') 
      .then(null, console.error.bind(console)); 
    </script> 

component.ts में

यहाँ

यह fileSaver

import {SaveAs} from 'fileSaver';  
नहीं मिल रहा है

त्रुटि मैं इस

error TS2307: Cannot find module 'fileSaver'. 

किसी भी विचार यहाँ क्या गलत है क्या है?

package.json:

"dependencies": { 
    // ... all angular dependencies 
    "file-saver": "1.3.2" 
}, 

index.html:

<!-- all angular dependencies and other 3rd party --> 
<script src="node_modules/file-saver/FileSaver.js"></script> 

typings.json

+0

क्या आप टाइपस्क्रिप्ट या जेएस के साथ विकास कर रहे हैं? – rinukkusu

+0

मैं टाइपस्क्रिप्ट – user2180794

+0

का उपयोग कर रहा हूं, मैं सचमुच अपने बालों को इस पर खींच रहा हूं .. – user2180794

उत्तर

2

मेरे मामले में मैं इसे इस तरह से काम किया:

// other typings needed 
"filesaver": "github:DefinitelyTyped/DefinitelyTyped/FileSaver/FileSaver.d.ts#d21f1bd1fd079bbc18bc88ed71d2be7f5707e33a" 

उपयोग:

var blob = new Blob([this.response], {type: 'application/zip'}); 
saveAs(blob, 'project.zip'); 

आप इसे चलाने से पहले एक npm install प्रदर्शन करने की जरूरत है।

यही है, उम्मीद है कि यह मदद करता है।

यह आपको import {SaveAs} from 'fileSaver'; दूँगी नहीं है और न ही पूर्ण कोड पूरा होने है, लेकिन कम से कम यह

+0

मुझे यह सहायक भी मिला: https://github.com/angular/angular-cli#3rd-party-library-installation – Jeff

0

एक और विकल्प JSMike यहाँ द्वारा दिया जाता है काम करता है: https://github.com/angular/angular-cli/issues/999

"यह वास्तव में है बस एक टाइपस्क्रिप्ट समस्या। बस src/typings.d.ts में निम्नलिखित जोड़ें "

declare module 'filesaver' { 
    var saveAs: any; 
    export = saveAs; 
} 

"और प्रयोग"

import filesaver = require('filesaver'); 

filesaver.saveAs(blob, filename); 
+0

मुझे नहीं पता कि यह नवीनतम संस्करण के साथ काम करता है या नहीं। – Jeff

0

स्थापित में पुस्तकालय और typings (@types)। फिर,

import {saveAs} from 'file-saver'; 

काम किया।मैं समझता हूँ के रूप में SystemJS डिफ़ॉल्ट रूप से एएमडी मॉड्यूल के रूप में फ़ाइल बचाने पहचान लेंगे

"packages":{ 
    "file-saver":{ 
      "main":"FileSaver.js", 
      "format": "cjs" 
    } 
} 

जहां तक: साथ ही, मैं प्रणाली जे एस विन्यास में स्पष्ट रूप CJS करने के लिए फ़ाइल बचाने के मॉड्यूल प्रारूप निर्धारित करने के लिए किया था। शायद फाइल-सेवर में एएमडी मॉड्यूल परिभाषा के साथ कुछ गड़बड़ है, लेकिन मुझे इसकी बहुत गहरी समझ नहीं है। (https://github.com/eligrey/FileSaver.js/blob/master/FileSaver.js#L182 भी देखें)

सीजेएस मॉड्यूल प्रारूप को सेट किए बिना, मुझे रनटाइम पर "fileSaver.saveAs एक फ़ंक्शन नहीं है" मिला।