2016-05-03 16 views
13

sto utilizzando un servizio nella mia applicazione angular per creare uibModal come seguecritici dipendenze - la richiesta di una dipendenza è un Webpack espressione

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 

       }); 
      } 

Si prega di notare la linea

template: require("../a/b/xyz.html"), 

voglio utilizzare una variabile al suo posto come questo

template: require(modalConfig.templateUrl), 

ma quando uso una variabile in luogo del valore codificato duro webpack me

Critical dependencies: 
83:22-54 the request of a dependency is an expression 

dà io non sono in grado di risolvere questo errore. Quale può essere la ragione possibile per questo?

Ho utilizzato il server node-express per le build continue webpack. Ho visto anche altre risposte, ma non hanno risolto la mia domanda.

risposta

14

Dopo molto colpito e il processo ha trovato il solution.What ho fatto è questo:

template: require("../../scripts" + modalConfig.templateUrl + ".html") 

Ipotesi cartella principale

  1. in base al quale tutti i file viene è scripts
  2. ed il relativo percorso di questa cartella dal file in cui è scritta la funzione è dire ../../scripts.
  3. ../../scripts + modalConfig.templateUrl + ".html" formerà il percorso corretto per il file da utilizzare.

obbligatorio Nota

  1. Sempre scrivere qualche percorso hardcoded della cartella principale. Non metterlo in variabile. quindi questo non funzionerà

    var context = "../../scripts" ; template: require(context + modalConfig.templateUrl + ".html")

Il percorso di base (come in una parte del percorso effettivo) deve essere hardcoded per riferimento di base, come in essa aiuta webpack per creare un elenco di tutti i moduli che potrebbero essere necessari per la dinamica richiede.

Motivo (dal webpack docs), leggi dynamic requires e context module.

+1

Mi ha salvato un sacco di tempo. Grazie! –