11

angular2 CLI (ember cli) を使用して typescript プロジェクトを生成しました。Chromium Web Developer ツールを使用してデバッグしています。開発者ツールの設定で「javascript ソース マップを有効にする」を選択しました。ソース ビューに .js ファイルと .ts が表示されます。ただし、.ts (typescript) ファイルを選択すると空として表示されます。つまり、ファイルが見つからないように見えます。

状況を示すスクリーン プリント:

ここに画像の説明を入力

.js ファイルを選択すると、そのテキストが表示されます

.ts ファイルはdist ディレクトリにコピーされません。これは私には問題のように思えますが、典型的な angular2 cli dist 構造を示す例を他の場所で見たことがあり、.ts ファイルもありません。

ソース マッピングが有効になっていることを示す "tsconfig.json" の関連部分:

 1   "compileOnSave": false,                                                                            
  2   "compilerOptions": {                                                                               
  3     "declaration": false,                                                                            
  4     "emitDecoratorMetadata": true,                                                                   
  5     "experimentalDecorators": true,                                                                  
  6     "mapRoot": "",                                                                                   
  7     "module": "system",                                                                              
  8     "moduleResolution": "node",                                                                      
  9     "noEmitOnError": true,                                                                           
 10     "noImplicitAny": false,                                                                          
 11     "outDir": "../dist/",                                                                            
 12     "rootDir": ".",                                                                                  
 13     "sourceMap": true,                                                                               
 14     "sourceRoot": "/",                                                                               
 15     "target": "es5"                                                                                  
 16   },                          

js.map ファイル生成され、.js ファイルの隣のdistディレクトリに置かれます。

マッピング ファイルの例 (部分):

{"version":3,"file":"app.js","sourceRoot":"/","sources":["app.ts"],"names":[],"mappings":";;;;;;;;;;;;;YAGA,mB

私は試しました:
1) .ts ファイルを src から dist にコピーします。
2) app.js.map ファイルを手動で編集しようとするさまざまな試み ( sourceRootsourcesなど) 。

js.map ファイルで "/" が何を参照しているのかは明確ではありません: プロジェクトの src ディレクトリまたは dist ディレクトリですか? .js.map ファイルを編集した場合、それを取得するにはブラウザを更新する必要がありますか?

基本的な問題は、src ディレクトリで ts ファイルを探していることであり、これはブラウザーの手の届かないところにあると思います ("../src" にあるため)。

Chromium は、ts ファイルのパスを「http://localhost:4202/app/cpp-scenes.ts」として表示します。しかし、そこに .ts ファイルを配置すると、サイコロはありません。

これが js マッピングの問題なのか、Angular 2 の問題なのか、Angular2 CLI の問題なのか、typescript の問題なのかはわかりません。

コンソールに「blah.tsの52行目のエラー」と表示されるのは本当に苦痛ですが、そこにジャンプしてブレークポイントなどを設定することはできません.

Angular2 CLI プロジェクトでソース マッピングを機能させることができた人はいますか?

4

5 に答える 5

10

これを機能させることができました。angular CLI srcフォルダーをワークスペースに追加する必要があり、.tsファイルの1つに「ネットワークリソースへのマップ」があります。

注: この例では、クライアントとサーバーが同じマシンで実行されている場合を想定しています。たとえば、クライアントが Windows マシン上にあり、サーバーが Linux で実行されている場合、クライアント マシン上でLinux サーバー ソース ディレクトリを Windows 共有としてマウントし、次のように指定する必要があります。

\\192.168.1.134\myShare\myProject\src\client

ワークスペース フォルダーとして。

私は最近これをしなければなりませんでした。もう少し複雑ですが、基本的にはローカルの場合と同じように機能します

プロセス全体のスクリーンショットを撮ったので、これらを表示するのがおそらく最も簡単です.

  1. distディレクトリ ( ng serveがサービスを提供しているディレクトリに対応)の下にある ts ファイルの 1 つを選択し、[フォルダーをワークスペースに追加] を選択します。

画面 1

  1. src/client フォルダーを選択します。 ここに画像の説明を入力

  2. 次のプロンプトに対して「許可」と言って、開発ツールが src ディレクトリにアクセスできるようにします。 ここに画像の説明を入力

  3. src フォルダーが Dev Tools ソースの下にリストされていることを確認します。これで、すべての ts ファイル (追加したものだけでなく) を参照できますが、設定したブレークポイントは、「マッピングを確立する」まで有効になりません。 ここに画像の説明を入力

  4. 次の 2 つのスクリーン プリントに示すように、マッピングを有効にすることができます。 ここに画像の説明を入力

適切なマッピングを選択し、それをクリックして有効にします ここに画像の説明を入力

これで、.ts ファイルにブレークポイントを設定し、エラー メッセージを .ts ソースにドリルダウンできます。

基本的なトリックは、ファイルがサービス ディレクトリの下にないため、ソース ts ファイル ディレクトリを Chrome に手動で追加する必要があることです。手動で削除する (.ts ファイルを右クリックして [ネットワーク マッピングの削除] を選択する) か、ブラウザーを閉じるまで (ただし、更新時にマッピングは保持されます)、マッピングは有効なままです。

于 2016-06-04T08:06:59.643 に答える
4

序章:

私は2016-06-04に投稿された回答の元のポスターとサプライヤーです。

私は最近、これを機能させるためのより簡単な方法を発見しました。元の回答がまだ機能しており、一部の人々はそれを好む可能性があるため、これを2番目の回答として投稿しています。ただし、これから説明する新しい方法は少し簡単だと思います。

ソリューションの概要:

基本的に、すべてを右クリックする代わりに、DeveloperTools->Settings->Workspace メニューの下ですべてを設定できます。元の回答を右クリックすることは、基本的に、このワークスペース フォームに入力する別の方法です。

  1. 次のように DeveloperTools->Settings ダイアログに移動します。

ここに画像の説明を入力

  1. 次に、[ワークスペース] セクションに移動し、次に説明するローカル サーバー ソリューションまたはリモート サーバーソリューションのいずれかに進みます。

ローカル サーバー ソリューション:

サーバーとブラウザが同じマシンで実行されている場合のスクリーン プリントを次に示します。

  1. ワークスペース ダイアログから、プロジェクトの 'src/client' ディレクトリと '/' へのマッピングを追加します。サーバー (「ng serve」) とブラウザーが同じマシン上にある場合の例を次に示します。

ここに画像の説明を入力

リモート サーバー ソリューション:

サーバーとブラウザが異なるマシンを実行している場合のスクリーン プリントを次に示します。

  1. サーバーが Linux で実行されていて、ブラウザーが Windows などの別のマシンで実行されている場合、Linux で samba 共有を作成し、Windows のドライブとしてマウントできます。

Windows コマンド プロンプト (実際にはgit bash shell ) から:

>$ net view  
Server Name            Remark
-------------------------------------------------------------------------------  
\\VT-VIRTUAL      vt-virtual-machine server (Samba, Linux Min  
The command completed successfully.

>$ net use l: '\\vt-virtual\vtstuff'
  1. 次に、ワークスペースを次のように設定します。 ここに画像の説明を入力

結論:

この方法で行うと、ブラウザーのサイクル全体で情報が保持されるため、一度実行するだけで済みます。おそらく、2016 年 7 月 30 日に投稿した人は、「箱から出してすぐに」機能すると述べていましたが、どういうわけか、このワークスペース フォームを既にセットアップしていたのでしょう。

これはChrome 開発者ツールのセットアップの問題であり、 Angular2またはAngular2 CLIとは何の関係もないことがわかりました。ソース (.ts) ファイルはランタイム (dist) ディレクトリで直接利用できないため、angular2 CLI を使用する人はこのワークスペース マッピングを行う必要があります。

于 2016-08-05T11:11:07.720 に答える
1

問題が何であるかはわかりませんが、私はそれに遭遇しませんでした。複雑な 5 ステップのプロセスは必要ありません。

.tsファイルは /dist フォルダーにコピーされませんコピーされるのは、ソース フォルダーへの参照を含む.mapファイルです。Chrome 開発者ツールでは、[ソース] タブ (オレンジ色のフォルダー) の下に すべての.tsファイルが表示されます。

「ng serve」を実行し、 http://localhost:4200を参照して開発者ツールを開く以外に何もしませんでした。リストされた .ts ファイル (オレンジ色のフォルダーにリストされています) の 1 つを開いたり、ブレークポイントを設定したりできます。

于 2016-07-30T18:17:55.910 に答える