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.