“this.getOptions 不是一个函数”是 webpack 的 bug 吗?

问题描述 投票:0回答:1

我有一个node.js后端项目,我使用

webpack
来构建它。

"webpack": "^4.46.0",
"webpack-cli": "^4.4.0"

它报告错误,例如

Module build failed (from ./node_modules/babel-loader/lib/index.js):
TypeError: this.getOptions is not a function

然后我阅读了

/node_modules/babel-loader/lib/index.js
的源代码来找出原因。

Screenshot of the source code with problem

如截图所示,

this.getOptions()
文件中只有一个
node_modules/babel-loader/lib/index.js
的搜索结果。没有定义该函数,只需使用它即可。这应该是一个错误,至少看起来是这样。

为什么

babel team
要写这样的源代码?为什么其他人都认为这是版本冲突而不是代码错误本身?

node.js webpack babeljs babel-loader webpack-cli
1个回答
1
投票

参见 Loaders 的 getOptions 方法

Webpack 5 附带了加载器上下文中可用的内置

this.getOptions
方法。对于之前使用首选
getOptions
schema-utils
方法的加载程序来说,这是一个重大变化:

this.getOptions
自 Webpack 5 起可用

babel-loader
9.x 支持 webpack 5.x,因为它使用
this.getOptions

如果你想使用 webpack 4.x,那么你应该使用

babel-loader
8.x,它支持 webpack 4.x 或 5.x。
babel-loder
8.x 使用
loaderUtils.getOptions(this)

版本兼容性说明在readme

上非常清楚
© www.soinside.com 2019 - 2024. All rights reserved.