webpack: Cannot read property 'match' of undefined
I have installed webpack (Symfony encore) using npm as follows:
sudo npm install -g @symfony/webpack-encore --save-dev
I ran this from /var/www/project
I was required to install globally due to issues with package managers and shared folders when dealing with Windows host / Linux guest.
I cannot install webpack (node_modules) in the same directory (or under it) as the /var/www/project
So my package.json file looks like this:
{
"name": "test",
"version": "1.0.0",
"description": "This is a test",
"main": "index.js",
"dependencies": {},
"devDependencies": {
"@symfony/webpack-encore": "^0.15.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Alex",
"license": "MIT"
}
I run encore from /var/www/project
using this
/usr/local/bin/encore dev
I get this lovely output in return:
Running webpack ...
TypeError: Cannot read property 'match' of undefined
- index.js:125 parse
[lib]/[webpack-encore]/[yargs-parser]/index.js:125:12
- index.js:761 Function.Parser.detailed
[lib]/[webpack-encore]/[yargs-parser]/index.js:761:10
- yargs.js:938 Object.Yargs.self._parseArgs
[lib]/[webpack-encore]/[yargs]/yargs.js:938:27
- yargs.js:927 Object.get [as argv]
[lib]/[webpack-encore]/[yargs]/yargs.js:927:19
- index.js:725 Object.configureRuntimeEnvironment
[lib]/[@symfony]/webpack-encore/index.js:725:54
- index.js:770 Proxy.parameters
[lib]/[@symfony]/webpack-encore/index.js:770:45
- webpack.config.js:3 Object.<anonymous>
/var/www/project/webpack.config.js:3:8
- module.js:573 Module._compile
module.js:573:30
- module.js:584 Object.Module._extensions..js
module.js:584:10
- module.js:507 Module.load
module.js:507:32
What am I missing?
Solution 1:
Simple answer just run
rm -rf package-lock.json
Solution 2:
Try to delete package-lock.json and node_modules folder and after that run npm install
or yarn install
Solution 3:
An additional reason for this message can be a mismatch between the npm
major version that the package-lock.json
was generated with and the version the npm install
is run on.
If for example the lockfile was generated using npm@5
and later you try to npm install
on npm@6
because of lets say a minor node@8
update you will see this error.
The solution here is like mentioned in the other answers to remove node_modules
and package-lock.json
and npm install
on npm@6
again. Or stay on npm@5
for lockfile and later install.
Solution 4:
Simply remove package-lock.json
with this cmd command:
rm -rf package-lock.json
Solution 5:
You need to remove package-lock.json
from the root directory of the application. After this, you can update your new package.