web-dev-qa-db-ja.com

Webpack-重要な依存関係:依存関係のリクエストは式です

ベアボーンwebpackプロジェクトでrequestをインポートすると、3つの警告メッセージが表示されます。バグを再現する最小限の例は GitHubnpm installおよびnpm startを実行)で入手できます。

Critical dependency: the request of a dependency is an expression

この警告を取り除くにはどうすればよいですか?


詳しくは:

Webpackは、require呼び出しを静的に解決して、最小限のバンドルを作成しようとします。ライブラリがrequire呼び出しで変数または式を使用する場合( これらの行 of ajvrequire('' + 'nodent')など)、Webpackはそれらを静的に解決できず、パッケージ全体をインポートします。

私の理論的根拠は、この動的なインポートは本番環境では望ましくなく、コードは警告なしで維持するのが最善だということです。つまり、問題を解決するソリューションが必要です。例えば。:

  1. Webpackを手動で構成して、必要なライブラリをインポートし、警告が発生しないようにします。
  2. 何らかの方法でrequire呼び出しをオーバーライドするhack.jsファイルをプロジェクトに追加します。
  3. ライブラリをアップグレードします。 ajv-5.0.1-beta.3には、警告を黙らせる修正があります。ただし、使用する場合は、リリースされるまで待機し、har-validatorおよびrequestが後続の更新をリリースするまで待機する必要があります。 har-validatorajvのベータ版を強制的に使用する方法があれば、それは私の問題を解決するでしょう。
  4. その他
43
Jodiug

npm install [email protected] --saveで解決

ajvの作成者によると、この問題は数週間後にrequestの最新バージョンで解決される可能性があります。

22
Jodiug

これを交換してください

new webpack.ContextReplacementPlugin(
        /angular(\\|\/)core(\\|\/)@angular/,
        helpers.root('./src'), // location of your src
        {} // a map of your routes
    ),

これとともに-

new webpack.ContextReplacementPlugin( /(.+)?angular(\\|\/)core(.+)?/, root('./src'), {} )
6
DhirendraNk