typescript - Errore TS4090: Librerie in conflitto per node in electron
ciao,
Sto sviluppando un'app Electron in TypeScript che va in errore durante la compilazione con il seguente messaggio di errore (tecnicamente ce ne sono cinque, ma sono tutti dello stesso tipo di errore, solo in conflitto con parti diverse)
node_modules/@types/body-parser/index.d.ts(12,23): error TS4090: Conflicting definitions for 'node' found at '.../node_modules/@types/node/index.d.ts' and './node_modules/electron/node_modules/@types/node/index.d.ts'. Consider installing a specific version of this library to resolve the conflict.
Quindi questo significa che ho due librerie di tipi per 'node' - tuttavia, non ho incluso una libreria @types/node nel mio package.json (poiché apparentemente è presente in Electron di default). Pertanto, sono completamente confuso e perso su come risolvere questo problema.
Ho provato a rimuovere node_modules e yarn.lock e a ricostruire i moduli da zero, rimuovendo sia @types/node che electron/.../@types/node, persino a rimuovere tutto il codice a cui si riferiscono e a ricostruirli gradualmente di nuovo. Nessuno ha funzionato. Ho anche provato a usare la soluzione menzionata qui: https://github.com/electron/electron/issues/10167 ma senza successo.
Nel messaggio di errore è scritto 'Considera di installare una versione specifica di questa libreria per risolvere il conflitto' - come faccio a farlo?
Si spera che queste siano abbastanza informazioni su cui basarsi,
Salute
Risposta n. 1
Sono riuscito a risolvere il mio errore, anche se è stato più attraverso il evitarlo che capendo e risolvendo effettivamente il problema sottostante. Sospettavo che avere un singolo file node_modules per una stack tecnologica UI abbastanza complessa e per la stack di Electron.
Ho quindi separato questi due in due sotto-progetti separati che sono compilati insieme e combinati in questo modo. Da notare che, per abilitare i moduli di Electron nel progetto UI, ho dovuto aggiungerlo manualmente al file webpack.config.js aggiungendo questo elemento all'array dei plugin.
new webpack.ExternalsPlugin('commonjs', [
'electron',
'ipc',
'ipc-renderer'
]),
Quindi, in conclusione, non ho più l'errore, anche se non l'ho risolto di per sé. Fornisco una breve descrizione di come ci sono riuscito nella speranza che altri che incontrano gli stessi errori possano essere aiutati da questo.
Salute
