Sono abbastanza nuovo su JavaScript e ho avuto recentemente problemi con le importazioni. C'è stata una cosa che non posso avvolgere nella mia testa.Cosa importa l'importazione del modulo da 'modulo' quando non viene definita l'esportazione predefinita e perché è diversa dall'importazione * come modulo?
Nei vecchi moduli di nodo (principalmente quelli che sono venuti a vedere la luce prima di ES6), che possono essere installati utilizzando il npm, come ad esempio express
, in genere non viene definita alcuna esportazione predefinita.
Il mio IDE (WebStorm) contrassegna la riga seguente con L'esportazione predefinita non è dichiarata nella notifica del modulo importato.
import express from 'express';
Questo messaggio può essere aggirato tentando di importare l'intero modulo come un alias utilizzando
import * as express from 'express';
implicitamente raccontare la mia IDE di importare proprio tutto e il nome express
, però così facendo poi porta ad un express non è una funzione errore quando si tenta di creare un'istanza dell'applicazione nella riga seguente.
const app = express();
Peculiaramente l'importazione originale (senza alias) funziona.
Cosa viene importato esattamente utilizzando la dichiarazione di importazione senza l'alias, quando non è definita l'esportazione predefinita? Penso che sia l'intero modulo, ma non sembra così.
Questo è più probabilmente un problema con il tuo IDE che non sa come i moduli pre-ES6 dei gestori del caricatore di moduli. Se funziona, dovresti usarlo e disattivare la notifica o trovare un modo per dichiarare le esportazioni dei moduli collegati. – Bergi
@Bergi Anche la notifica IDE non è un problema, non è la questione della domanda. Sono più interessato a ciò che viene importato come predefinito quando non viene dichiarata alcuna importazione, come ha fatto notare il mio IDE. Probabilmente avrei dichiarato che sto usando webpack e babel con es-2015 preimpostato per imballare i moduli in un pacchetto. Non ho tempo solo ora, ma modifico la domanda quando lo faccio. –
@DavidPacker WebStorm smette di lamentarsi dopo aver scaricato e abilitato i file di definizione del tipo (ad esempio 'express.d.ts') da [github.com/DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped) in * Impostazioni> Lingue e Frameworks> JavaScript> Librerie> Download> express> Download e installazione * –