次のように、angular
アプリケーションでサービスを使用してuibModal
を作成しています
function modal(modalConfig){
var modalInstance = $uibModal.open({
animation: true,
template: require("../a/b/xyz.html"),
controller: modalConfig.controller,
size: modalConfig.size,
controllerAs: modalConfig.controllerAs,
bindToController : true,
resolve: modalConfig.resolveObj
});
}
行に注意してください
template: require("../a/b/xyz.html"),
このような場所で変数を使用したい
template: require(modalConfig.templateUrl),
しかし、ハードコードされた値の代わりに変数を使用すると、webpack
は私に与えます
Critical dependencies:
83:22-54 the request of a dependency is an expression
このエラーを解決できません。考えられる理由は何ですか?
利用した node-express
継続的なwebpack
ビルド用のサーバー。他の回答も調べましたが、私の質問は解決されませんでした。
多くのヒットとトライアルが解決策を見つけた後、私がしたことはこれです:
_template: require("../../scripts" + modalConfig.templateUrl + ".html")
_
仮定
scripts
です../../scripts
_です。../../scripts
_ + _modalConfig.templateUrl
_ + _".html"
_は、使用するファイルの正しいパスを形成します。必須メモ
ルートフォルダーのハードコーディングされたパスを常に書き込みます。変数に入れないでください。これはうまくいきません
var context = "../../scripts" ; template: require(context + modalConfig.templateUrl + ".html")
ベースパス(実際のパスの一部など)は、基本的な参照用にハードコーディングする必要があります。これは、動的な要求に必要なすべてのモジュールのリストをWebpackが作成するのに役立つためです。
理由(webpack docs から)、 dynamic require をお読みください。