2016-05-30 10 views
12

Sto cercando di capire perché webpack richiede questa estensione vuota.Perché il webpack ha bisogno di un'estensione vuota

All'interno resolve.extensions c'è sempre questo tipo di configurazione:

extensions: ['', '.js', '.jsx'] 

Perché non può essere solo questo:

extensions: ['.js', '.jsx'] 
+0

anche vedere qui: https://github.com/webpack/webpack/issues/3043 – shershen

risposta

5

Dal documentation:

Setting this option will override the default, meaning that webpack will no longer try to resolve modules using the default extensions. If you want modules that were required with their extension (e.g. require('./somefile.ext')) to be properly resolved, you must include an empty string in your array. Similarly, if you want modules that were required without extensions (e.g. require('underscore')) to be resolved to files with “.js” extensions, you must include ".js" in your array.

In altre parole , se non hai incluso la stringa vuota e richiesto un modulo come ./foo.js, il webpack cercherebbe invece ./foo.js.js e ./foo.js.jsx.

4

L'estensione '' è veramente solo necessariamente se si require a file by its full name:

If you want modules that were required with their extension (e.g. require('./somefile.ext')) to be properly resolved, you must include an empty string in your array.

Webpack sempre utilizzare uno dei extensions durante il tentativo di trovare un file, lungo le linee di:

var fileName = nameGiven + extension[i]; 
fs.exists(fileName, ...); 

Se il nameGiven include il nome completo del file, ad esempio require('./foo.js'), verrà ancora aggiunto ogni interno:

'./foo.js' + '.js' // './foo.js.js' duplicated extension 
'./foo.js' + '.jsx' // './foo.js.jsx' mixed extensions 

Rispetto a:

'./foo.js' + ''  // './foo.js'  left as-is 
21

In una più recente versione Webpack non è possibile utilizzare una stringa vuota. Dice:

Getting error: configuration.resolve.extensions[0] should not be empty.

È necessario utilizzare extensions: ['.js', '.jsx'] o extensions: ['*', '.js', '.jsx'].

Problema: https://github.com/webpack/webpack/issues/3043

+1

true story "webpack": "^ 2.6.1" –

4

Questa è stata modificata ora in webpack2.

Ora è necessario fornire solo:

resolve: {extensions: ['.js', '.es6']} 

E se fornite '' nella matrice che genera l'errore:

configuration.resolve.extensions[0] should not be empty

Problemi correlati