• Home
  • npm – come risolvere “throw er; // Unhandled ‘error’ event” e “Unknown argument: –hide-modules”

Npm (Node.js) in accoppiata con progetti Laravel (ma non solo!) prima o poi darà grattacapi, con errori quali "throw er; // Unhandled 'error' event" o "Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.", o ancora "Unknown argument: --hide-modules".

In genere si ottengono tali errori in prossimità di un passaggio di versione di Node o di npm, oppure a causa di alcuni lock dovuti ad alcune dipendenze.

Di seguito riporto una soluzione che mi è costata diverse ore di tempo in test, ricerche e comprensione. Reputo quindi possa risultare utile in caso si incontrassero errori quali quelli segnalati.

“throw er; // Unhandled ‘error’ event[/wc_code]” o “Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.” o, ancora, “Unknown argument: –hide-modules”

 


Come risolvere “throw er; // Unhandled ‘error’ event”

Prendo come esempio la mia situazione attuale:

node -v restituisce  v15.11.0

ed npm -v invece v7.6.3

Da shell, portarsi nella cartella del progetto Laravel incriminato, digitare nano package,json
Al suo interno cercare “devDependencies”
ed in esso come ultima voce, aggiungere  "webpack": "^5.23.0"
Mi raccomando assicurarsi che la voce precedente termini con una virgola prima di inserire webpack o si genereranno errori.

Rimuovere sass e sass-loader, poichè capita che rimangano bloccati ad una versione troppo vecchia rispetto a webpack. Eseguire nell’ordine:

npm uninstall sass

npm uninstall sass-loader

Verranno reinstallati come dipendenze al prossimo lancio di npm run dev o npn run watch (non ora!).
A tal proposito, è bene, qualora nel progetto la directory sass sia stata eliminata o non sia mai esistita, creare a mano il file vuoto:
directory_del_progetto_laravel/resources/sass/app.scss
Questo eliminerà eventuali errori nella procedura quando successivamente si eseguirà npm install (non ora!).

Stesso discorso se si utilizza less.
npm uninstall less
npm uninstall less-loader

Successivamente, lanciare:
rm -rf node_modules

rm package-lock.json yarn.lock

npm cache clear --force


Come risolvere “Unknown argument: –hide-modules”

Qualora si fosse affetti dall’errore Unknown argument: --hide-modules nel medesimo “package.json” (soprattutto se con versioni di node >= 15.x e npm >= 7.x), modificare la sezione “scripts”.
La procedura più semplice prevede che, nel metodo “development” si elimini il parametro "--hide-modules".
Consiglio però, come indicato dalla guida ufficiale di Laravel Mix, di modificare l’intero blocco come segue:

"scripts": {
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"production": "mix --production"
}

In questo modo verrà utilizzata la nuova CLI di Mix.


Verifiche finali

E’ giunto il momento di capire se tutto è andato come sperato, ovvero se “Unknown argument: –hide-modules”, “throw er; // Unhandled 'error' event” o “Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.” siano scomparsi.

Digitare:
npm install

Ed infine
npm run dev

npm-laravel-mix-succesfully-compiled

Al termine Laravel Mix dovrebbe restituire Compiled succesfully.

 


Segui @andymnc (Andrea Manconi) su Twitter per essere sempre aggiornato su guide ed articoli


Condividi: