2017-02-02 77 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文件夹中,我有两个文件夹,app和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); 

如果有人对此问题有任何线索,请给我建议。 guide fo this

如果它是一个外部库,并将其安装作为一个普通NPM包:

+0

看起来像某处是你导入'rxjs/Subject'的'ts'文件,但它没有通过SystemJs正确配置。 – Shawn

+0

你是什么意思的进口? –

+0

不,我不会将rxjs导出到任何地方。 app.ts和app.html是我在这个项目中包含的所有文件。 –

回答

0

如果您sha.js是你自己写的模块,你应该为它导入到你的应用程序添加sha.d.ts文件

npm install —save sha