Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 364 Vote(s) - 3.45 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Webpack Error - configuration.node has an unknown property 'fs'

#1
I have encountered an error when using the latest version of Webpack (5.1.0). It looks like the configuration is throwing an error because the validation schema is too restrictive. Here is my webpack configuration file in a gist, and the error message I am seeing.

**Webpack.config.js**



**Error**
```
[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! [email protected] start: `webpack serve`
npm ERR! Exit status 2
```

I am attempting to use a parser generator library (antlr4) that works both in a Node.js environment, as well as in browsers. It looks like the library code is requiring global objects like fs, and if it is empty, assumes that it is in a browser environment. According to the [documentation of Antlr4](

[To see links please register here]

) and [that of Webpack](

[To see links please register here]

) , this is a supported configuration file. But it is not working. Please help.

**Versions**

- webpack: 5.1.0
- webpack-cli: 4.0.0
- webpack-dev-middleware: 3.7.2
- webpack-dev-server: 3.11.0

**Update (Oct 29 2020)**

Antlr JavaScript documentation has now been updated with the new configuration for Webpack 5
Reply

#2
Interesting enough, I get in case of `path` (but not with `file`) the following message, more clear of webpack CLI:

```
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
- install 'path-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "path": false }
```

However it seems to me this info should also be found here, and removed the statement that any built-in module can be used as property there:

[To see links please register here]

Reply

#3
Exactly for rails webpacker, if you are using it, the solution should be a:

Inside any of config/webpack/*.js which uses the plain custom config (see

[To see links please register here]

for more), just add the code resolving and removing the node property.

```js
const { environment } = require('@rails/webpacker')

const customConfig = {
resolve: {
fallback: {
dgram: false,
fs: false,
net: false,
tls: false,
child_process: false
}
}
};

environment.config.delete('node.dgram')
environment.config.delete('node.fs')
environment.config.delete('node.net')
environment.config.delete('node.tls')
environment.config.delete('node.child_process')

environment.config.merge(customConfig);

module.exports = environment
```
Reply

#4
I managed to get this to work with some help from the Webpack team. Using the following webpack configuration as recommended by the antlr4 documentation is no longer supported.

**Does not work**
```js
{
node: {
fs: 'empty',
module: 'empty',
net: 'empty'
}
}
```

**Working configuration**

```js
{
resolve: {
fallback: {
fs: false
}
}
}
```

With this, I was able to get my JavaScript parser working.

Please note that there is an ongoing effort to update antlr4 to generate ES6 based code. This configuration may not be necessary in the future.
Reply

#5
If someone is facing this error in Next JS, I found the solution by disabling webpack 5 which is set by default.

disable it by `webpack5: false` in next.config.js
Reply

#6
**Next.js** users:

module.exports = {
webpack: (config, { isServer }) => {
if (!isServer) {
config.resolve.fallback.fs = false;
}
return config;
},
}

[Source][1]


[1]:

[To see links please register here]

Reply

#7
I have encountered with same issue while working with Next js, I have searched different solutions like `webpack5: false` or `fs: false`, but that didn't work for me.

config.node = {
// fs: 'empty'
global: true,
__filename: true,
__dirname: true,
}

this did work for me, because in webpack 3.0.0, the node option may be set to false to completely turn off the NodeStuffPlugin, as we are working in JS and specially in Next-JS which requires Node-JS, so we don't have to turn it off completely because while 'false' the Webpack wouldn't touch your '__filename' code and your '__dirname' code.

**Any correction or guidance's will be appreciated, Thankyou**


Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through