web-dev-qa-db-ja.com

Angular 2+:IE 11未定義またはnull参照のプロパティ 'call'を取得できません

Internet ExplorerでWebpackで何かが窒息する問題があります。私はAngular-CLI 1.7.4、およびAngular 5.2.10、現在のバージョンを使用しています。このエラーが発生しています:

SCRIPT:5007未定義またはnull参照のプロパティ 'call'を取得できません。インラインbundle.js(55,12)

これは、バンドルの別の行にあるという点で この問題 とは異なります。行は次のようになります。

_/******/        modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
_

_node_modules_のwebpackコードを_console.log_ moduleIdに改造しようとしましたが、何らかの理由でログに記録されません。

多くの人がこの問題に対処している このスレッド を見つけました。私の問題に関連するものを見ることができません。

CLIからの循環依存警告はありません。

コードをいくつかの異なる以前のバージョンに戻し、ノードモジュールを再インストールしましたが、同じエラーが引き続き発生します。それは本当に奇妙です。

更新:ここに私が持っているポリフィルがあります:

_import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/set';
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';
_

また、 この問題 が見つかりました。これは、多くの人がこの問題を抱えており、提供されているソリューションが機能していないことを示しています。

更新:console.logがWebpackから呼び出されなかった理由を見つけました。それは必ずしもinWebpackではなかったということです。 _node_modules_でmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__)を検索しましたが、87回発生しました。 「webpack」と書かれているため、webpackの一部であると考えたので、それが私が最初に見た場所であり、does発生したので、私はそれを見つけたと思ってそこで止めました。

また、この問題が再び発生し、Angular-CLIサーバーを何度も再起動しましたが、動作するコンパイルを取得できません。

これは非常に重要になりつつあるため、この質問に対して賞金を上げるつもりです。

更新:IEは、ポリフィルを追加するメソッドの呼び出し(_Function.prototype.call_)で窒息しているように見えます。これをinline.bundle.jsからキャプチャしました。起こること:

_function(module, exports, __webpack_require__) {

    module.exports = __webpack_require__("./src/polyfills.ts");

}
_
15
BBaysinger

このエラーはng serveを実行している場合にのみ発生し、実動ビルドでは発生しないため、この問題は重大ではなく、次のような回避策があります。

回避策:これが発生したら、ブラウザーを閉じ、Angular-CLI開発サーバーを再起動して、ブラウザーをアプリで開き直します(する必要はありませんキャッシュをクリアするなど)

これは、あるテスト環境でのみ発生し、他のテスト環境では発生しないことがあります。

ごとに このスレッド 、github.com/jakehockey10は言う:

Developer Toolsを開いた状態でライブリロードが発生した後にのみ、この問題が発生します。 ChromeとFirefoxでは問題ありませんが、IE11で開発者ツールを開いてTypeScriptの変更をほぼ100%保存すると、リロード時にこれらのエラーが発生します。

また、Angular 6は完全なリリースであり、Webpackの新しいメジャーバージョンを使用しています。まだ試していませんが、誰かが問題を解決しようとしたかどうかを知ることをお勧めしますアップグレード。

11
BBaysinger

上記のポリフィルが含まれていても、IEでサポートされていない機能を使用している可能性があります。代わりに、あなたはこれを試すかもしれません:

 import 'core-js/shim';

これには、すべてのポリフィルが含まれます(とにかくバンドルにそれほど多くは追加されません)。少なくとも、これはポリフィルが問題であることを排除するのに役立ちます。

参照のためのソース: https://github.com/zloirock/core-js/blob/master/shim.js

がんばろう!

6
Pearman

回避策:問題はWebpack開発サーバーのみであるため、ファイルをng build --watchで書き込むことを選択し、 lite-server テスト用IE <= 11。

0
BBaysinger

このコードが他のブラウザーで機能する場合は、IE固有のJS実装の問題が発生している可能性があります。プロジェクトで、src/polyfills.tsファイルを開きます。 IE polyfillsのコメントアウトされた行で始まります。すべてのコメントを解除してアプリを再構築します。 。

0
Yakov Fain