問題タブ [angular-aot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
83 参照

node.js - npm パッケージで Angular AOT コンパイルが失敗する

私は Web 開発の初心者で、対処方法がわからない問題に直面しています。

Angular 4 の Typescript で開発された Web アプリケーションで@uniprank/ngx-file-uploader ( https://www.npmjs.com/package/@uniprank/ngx-file-uploader ) という名前の npm パッケージを使用しています。 . JIT コンパイルでコンパイルすると、問題なく動作します。しかし、今度はアプリケーションを本番モードにしたいので、AOT コンパイルを試してみました。https://angular.io/guide/aot-compilerに示されているように、Angular コンパイラでアプリケーションをコンパイルしようとすると。表示されるメッセージは次のとおりです。

この時点で私は完全に迷っています。Web で調べてみましたが、そのメッセージの意味と修正方法がわかりません。

この問題を解決するためのアイデアをいただければ幸いです。ありがとう。

0 投票する
1 に答える
602 参照

angular - Angular errorhandler は aot バンドルにコンポーネントを含めます

次のようなエラーハンドラがあります。

私はこれを取得しました:グローバルエラー処理角度2

私の質問は、開発でこれを実行すると、コンポーネントが含まれている意味のあるスタックトレースで期待どおりに機能するということです:

例えば:

ngOnInit()@webpack:///src/app/person/userdetail-page/userdetail-page.component.ts:29:19 __tryOrSetError()@webpack:///~/rxjs/Subscriber.js:247:0 this.__tryOrSetError()@webpack:///~/rxjs/Subscriber.js:187:0 _next()@webpack:///~/rxjs/Subscriber.js:125:0 next()@webpack:// /~/rxjs/Subscriber.js:89:0 notifyNext()@webpack:///~/rxjs/operator/switchMap.js:124:0

ただし、Angular cliを使用して本番環境にある場合:ng build --prod --aot

同じエラーの出力は次のとおりです。

プロパティ 'toString' の undefined TypeError: Cannot read property 'toString' of undefined at e._next ( http://xxx.azurewebsites.net/main.b21b245638698421733f.bundle.js:1:5701 ) at e.__tryOrSetError ( http: //xxx.azurewebsites.net/vendor.1cd9b81fc017fd7eac16.bundle.js:835:16880 ) e.next で

したがって、これは私にとって意味のあるスタックトレースではありません。私の開発環境のように、問題の原因となっているコンポーネントを取得できたのはなぜですか??!

本番サイトのエラーをどのように処理していますか? コードのすべての場所で try catch を使用すると、特定のタイプのエラーをスローできますが、try catch ブロックがない場所で発生しますか??

スタックトレースは、バンドル内の未定義の tostring を表示するだけでなく、エラーの原因となっているコンポーネントを常に表示する必要があります!