为什么webpack需要一个空的扩展名

Pep*_*ijn 14 javascript webpack

我想弄清楚为什么webpack需要这个空的扩展名.

里面resolve.extensions总有这种配置:

extensions: ['', '.js', '.jsx']
Run Code Online (Sandbox Code Playgroud)

为什么不能这样呢:

extensions: ['.js', '.jsx']
Run Code Online (Sandbox Code Playgroud)

Rob*_*uch 23

在较新的Webpack版本中,您不能使用空字符串.它说:

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

你必须使用extensions: ['.js', '.jsx']extensions: ['*', '.js', '.jsx'].

问题:https://github.com/webpack/webpack/issues/3043


Fel*_*ing 6

文档:

设置此选项将覆盖默认值,这意味着webpack将不再尝试使用默认扩展来解析模块.如果您希望require('./somefile.ext')正确解析其扩展(例如)所需的模块,则必须在数组中包含空字符串.同样,如果您希望将没有扩展名所需的模块(例如require('underscore'))解析为扩展名为".js"的文件,则必须包含".js"在数组中.

换句话说,如果你没有包含空字符串并且需要一个模块./foo.js,那么webpack会寻找./foo.js.js./foo.js.jsx不是.


pra*_*noy 6

现在已在webpack2中对此进行了修改。

现在,您只需要提供:

resolve: {extensions: ['.js', '.es6']}
Run Code Online (Sandbox Code Playgroud)

并且如果您''在数组中提供它会引发错误:

configuration.resolve.extensions [0]不能为空