2016-04-29 14 views
1

私はこのようなURLを持っています:http://www.foo.com/bar/(BarはDefault WebサイトでそのアプリケーションにアクセスするためのIISの私のアプリケーション名です)。SystemJS System.importのTypescript参照パス。アプリケーションがサイトに追加されています

MVCで、headタグにファイルやスタイルシートなどを読み込む際には、通常「〜/ Content/foo.css」を使用できます。

SystemJSでは、 "Scripts/typescript/main.js"にあるmain.jsファイルをインポートしようとしていますが、アプリケーション名(上記のバー)を参照する必要があります。

ここで私が今持っているものです。

<script> 
 
    System.config({ 
 
     packages: { 
 
      './Scripts/typescript': { 
 
       format: 'register', 
 
       defaultExtension: 'js' 
 
      } 
 
     } 
 
    }); 
 

 
    System.import('./Scripts/typescript/main.js').then(null, console.error.bind(console)); 
 
    </script>

問題は、これがルートに見えるので、www.foo.com/Scripts/typescript/mainにアクセスしようとしています.jsが本当にwww.foo.com/bar/Scripts/typescript.main.jsにアクセスする必要があるとき。

アプリ名が違う、または存在しない場所では機能しないため、アプリ名を自分のURLにハードコードしたくありません。

正しいパスにアクセスする方法を知ってもらえますか?

+0

アプリケーション名が混乱しています(アプリケーション名としてfooとbarを使用しています)。 –

答えて

1

次のプロパティSystem.baseURLを設定する必要があります。

configメソッドに渡されたオブジェクトで行うことができます。

System.config({ 
    baseURL: '/foo', 
    packages: { 
     './Scripts/typescript': { 
      format: 'register', 
      defaultExtension: 'js' 
     } 
    } 
}); 
+0

しかし、アプリ名が変更されたり消えたりするとどうなりますか?その後、毎回自分のコードを変更する必要があります。 – Bohms27

+0

@ Bohms27はい、あなたは動的にアプリ名を取得し、何とかそのファイルに挿入することができます。 –

+0

私はこれを行い、 "Scripts/typescript/main.js"ファイルを見つけることができないという問題を修正しましたが、現在はnode_modulesなどで問題が発生しています。たとえば、 "foo.com/bar/angular2/core.js"を検索していますが、実際には "foo.com/bar/node_modules/angular2/core.js"にあるので見つけることはできません。 Webサーバーにnodejをインストールする必要がありますか? – Bohms27

関連する問題