2016-09-13 12 views
6

Działa to prawidłowo, gdy ręcznie żądam pliku przy użyciu require, jednak w chwili użycia tego samego żądania, ale zmień ciąg tak, aby był podzielony na zmienne, które zawodzi.Dynamiczna ścieżka do pliku wymagająca w pakiecie sieci Web?

Działa to doskonale:

module.exports = (function() { 
    var $svg = require('svg-inline!../../assets/svgs/global/connected.svg'); 
    console.log($svg); 
}()); 

Jednak gdybym miał to zrobić:

module.exports = (function() { 
    var $path = '../../assets/svgs/global/'; 
    var $svg = require('svg-inline!'+$path+'connected.svg'); 
    console.log($svg); 
}()); 

To nie powiedzie się i mówi wewnątrz konsoli:

Uncaught Error: Cannot find module "."

Myślę, że moje Pytanie brzmi: dlaczego nie można łączyć łańcuchów takich jak tutaj?

+0

https://github.com/webpack/webpack/issues/118 –

Odpowiedz

2

Myślę, że trzeba zajrzeć do pakietu internetowego context. Zasadniczo, gdy próbujesz wymagać czegoś, co zawiera wyrażenie, pakiet internetowy stworzy kontekst. To wyrażenie będzie traktowane jako wyrażenie regularne i nie będzie działać tak, jak można się spodziewać.

0

Spróbuj:

require(`svg-inline!${$path}connected.svg`) 

a jeśli potrzebujesz więcej zmienna w dynamicznym try ścieżka rozłamu wymagać:

function getIcon(name) { 
 
\t const [category, filename] = name.split(":"); 
 

 
\t if (filename) { 
 
\t \t return require(`one_directory/icons/${category}/${filename}.svg`); 
 
\t } else { 
 
\t \t return require(`two_directory/icons/${name}.svg`); 
 
\t } 
 
}

Powiązane problemy