【发布时间】:2021-01-29 08:51:42
【问题描述】:
我在使用最新版本的 Webpack (5.1.0) 时遇到错误。看起来配置正在引发错误,因为验证模式过于严格。这是我的 webpack 配置文件,以及我看到的错误消息。
Webpack.config.js
https://gist.github.com/adarshbhat/3ec5950b66b78102da0cf46e51a3d633
错误
[webpack-cli]
Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
- configuration.node should be one of these:
false | object { __dirname?, __filename?, global? }
-> Include polyfills or mocks for various node stuff.
Details:
* configuration.node has an unknown property 'module'. These properties are valid:
object { __dirname?, __filename?, global? }
-> Options object for node compatibility features.
* configuration.node has an unknown property 'net'. These properties are valid:
object { __dirname?, __filename?, global? }
-> Options object for node compatibility features.
* configuration.node has an unknown property 'fs'. These properties are valid:
object { __dirname?, __filename?, global? }
-> Options object for node compatibility features.
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! jstest@1.0.0 start: `webpack serve`
npm ERR! Exit status 2
我正在尝试使用可在 Node.js 环境和浏览器中运行的解析器生成器库 (antlr4)。看起来库代码需要像 fs 这样的全局对象,如果它是空的,则假定它在浏览器环境中。根据 documentation of Antlr4 和 that of Webpack ,这是一个受支持的配置文件。但它不起作用。请帮忙。
版本
- webpack:5.1.0
- webpack-cli: 4.0.0
- webpack-dev-middleware: 3.7.2
- webpack-dev-server: 3.11.0
更新(2020 年 10 月 29 日)
Antlr JavaScript 文档现已更新为 Webpack 5 的新配置
【问题讨论】:
-
看起来您正在尝试在浏览器中使用
fs和net模块,这是不可能的 -
你是对的——图书馆正在尝试
require这些模块。如果它接收到一个空对象,那么它假定它在浏览器环境中。这就是该库能够在 Node.js 环境和浏览器环境中运行的方式。看起来其他人已经能够让它在旧版本的 Webpack 中工作。 -
更好的解决方案是检查
window或document是否被定义:if (typeof window !== 'undefined') ...如果没有,那么你在node.js 中 -
同意这不是最好的行为。不过,这不是我能控制的。此行为已在
antlr4库包中实现。我只是试图使用它的可怜的家伙。如果这是受支持的配置,我希望 Webpack 能解决这个问题。
标签: javascript node.js webpack antlr4