ベアボーンwebpackプロジェクトでrequest
をインポートすると、3つの警告メッセージが表示されます。バグを再現する最小限の例は GitHub (npm install
およびnpm start
を実行)で入手できます。
Critical dependency: the request of a dependency is an expression
この警告を取り除くにはどうすればよいですか?
詳しくは:
Webpackは、require
呼び出しを静的に解決して、最小限のバンドルを作成しようとします。ライブラリがrequire呼び出しで変数または式を使用する場合( これらの行 of ajv
のrequire('' + 'nodent')
など)、Webpackはそれらを静的に解決できず、パッケージ全体をインポートします。
私の理論的根拠は、この動的なインポートは本番環境では望ましくなく、コードは警告なしで維持するのが最善だということです。つまり、問題を解決するソリューションが必要です。例えば。:
hack.js
ファイルをプロジェクトに追加します。ajv-5.0.1-beta.3
には、警告を黙らせる修正があります。ただし、使用する場合は、リリースされるまで待機し、har-validator
およびrequest
が後続の更新をリリースするまで待機する必要があります。 har-validator
にajv
のベータ版を強制的に使用する方法があれば、それは私の問題を解決するでしょう。npm install [email protected] --save
で解決
ajv
の作成者によると、この問題は数週間後にrequest
の最新バージョンで解決される可能性があります。
これを交換してください
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'), {} )