2016-04-10 9 views
0

に見ていません。私たちのアプリケーションが使用するかなりのURLのため、これは実際には不可能です。たとえば、http://www.website.com/modules/worker/person/1/1/1の場合、前のURLを持つページを読み込むと、system.jsには、 "/"に基づいたフォルダではなく、/modules/worker/person/1/1というフォルダがあります。活字体のAppはnode_modulesフォルダ

溶液は、モジュールは、ルートディレクトリに基づいてロードされるようbaseURL:"/"を設定することです。

そのノードモジュールが正しくロードされていないこの解決策の問題点は、代わりにnode_modulesディレクトリに見ての、system.jsはルートに探しています。 system.jsは/node_modules/angular2/http.jsではなくで表示されます

「node」モジュールのコンパイルから「classic」に切り替えると、結果は同じになります。

進め方についてのご意見はありますか?ここで

+1

私は、必要なファイルに対してSystem.configの "paths"設定を指定することで問題を解決しました。 – ktamlyn

+1

こんにちは@ktamlynここでこの 'System.config'を回答として追加できますか?それは次の開発者に役立つかもしれません。 – ssuperczynski

+0

合意し、Stackoverflowのルールで自分自身で質問に答えるのを待たなければならなかった。 – ktamlyn

答えて

1

はSystem.configオブジェクトのパスプロパティを使用して、この問題に対する私の解決策だった:私は直接指すように持っていた外main.js(すべての外部ライブラリ)をロードされた各資産については

System.config({ 
     defaultJSExtensions: true, 
     baseURL: "/", 
     paths: { 
      'modules/worker/*': '/modules/worker/*', 
      'angular2/*': '/node_modules/angular2/*', 
      'rxjs/*': '/node_modules/rxjs/*', 
     }, 
     packages: { 
      modules : { 
       worker: { 
        format: 'register', 
        defaultExtension: 'js' 
       } 
      } 
     } 
    }); 
    System.import('modules/worker/main') 
      .then(null, console.error.bind(console)); 

それらにパスの設定プロパティで指定します。このリストは、公開されているTypescriptクラスの依存関係によって異なります。

関連する問題