2017-02-02 6 views
1

Я следую за этим (https://www.thepolyglotdeveloper.com/2016/01/include-external-javascript-libraries-in-an-angular-2-typescript-project/), чтобы импортировать внешнюю библиотеку. Однако я не могу имитировать это так же. Я получил следующую ошибку:Как импортировать внешнюю библиотеку в angular2?

GET http://127.0.0.1:8080/src/rxjs/Subject 404 (не найдено).

Внутри src, папка, у меня есть две папки, приложение и js и два файла, index.html и tsconfig.json.

App.ts

declare var jsSHA: any; 

@Component({ 
    selector: "my-app", 
    templateUrl: "app/app.html", 
    directives: [] 
}) 

class App { 

    shaObj: any; 
    hash: String; 

    constructor() { 
     this.shaObj = new jsSHA("SHA-512", "TEXT"); 
     this.shaObj.update("This is a test"); 
     this.hash = this.shaObj.getHash("HEX"); 
    } 

} 

bootstrap(App, []); 

app.html

<h1>SHA-512 Hash</h1> 

<p>String: This is a test</p> 
<p>HEX: {{hash}}</p> 

Index.html

<html> 
    <head> 
     <title>Angular 2 QuickStart</title> 
     <script src="../node_modules/angular2/bundles/angular2-polyfills.js"></script> 
     <script src="../node_modules/systemjs/dist/system.src.js"></script> 
     <script src="../node_modules/rxjs/bundles/Rx.js"></script> 
     <script src="../node_modules/angular2/bundles/angular2.dev.js"></script> 
     <script src="js/sha.js"></script> 
     <script> 
      System.config({ 
       packages: {'app': {defaultExtension: 'js'}} 
      }); 
      System.import('app/app'); 
     </script> 
    </head> 
    <body> 
     <my-app>Loading...</my-app> 
    </body> 
</html> 

system.config.js

(function (global) { 
    System.config({ 
     paths: { 
      // paths serve as alias 
      'npm:': 'node_modules/' 
     }, 
     // map tells the System loader where to look for things 
     map: { 
      // our app is within the app folder 
      app: 'app', 
      // angular bundles 
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js', 
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 
      // other libraries 
      'rxjs': 'npm:rxjs', 
      'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api', 
      'underscore': 'node_modules/underscore/underscore.js' 
     }, 
     // packages tells the System loader how to load when no filename and/or no extension 
     packages: { 
      app: { 
       main: './app.js', 
       defaultExtension: 'js' 
      }, 
      rxjs: { 
       defaultExtension: 'js' 
      } 
     } 
    }); 
})(this); 

Если у кого-то есть какие-либо сведения об этой проблеме, пожалуйста, дайте мне совет.

+0

Похоже, что где-то ваши файлы 'ts', которые вы импортируете' rxjs/Subject', но не правильно настроены через SystemJ. – Shawn

+0

Что вы подразумеваете под импортом? –

+0

Нет, я не экспортирую rxjs нигде. App.ts и app.html - все файлы, которые я включил в этот проект. –

ответ

0

Если ваш sha.js ваш собственный написанный модуль, вы должны добавить sha.d.ts файл, чтобы импортировать его в приложение: guide fo this

Если это внешняя библиотека, установить его как обычный пакет NPM:

npm install —save sha 
Смежные вопросы