title: What does import Module from 'module' import when no default export is defined and why is it different from import * as Module?
body: <p>I am pretty new to JavaScript and have been struggling with imports recently. There has been one thing I cannot wrap my head around.</p>
  
  <p>In older node modules (mostly those which came to see the light prior to ES6), which may be installed using the npm, such as <code>express</code>, usually no default export is defined.</p>
  
  <p>My IDE (WebStorm) marks the following line with the <em>Default export is not declared in the imported module</em> notification.</p>
  
  <pre><code>import express from 'express';
  </code></pre>
  
  <p>This message may be circumvented by trying to import the whole module as an alias using</p>
  
  <pre><code>import * as express from 'express';
  </code></pre>
  
  <p>implicitly telling my IDE to just import everything and name it <code>express</code>, however doing so then leads to an <em>express is not a function</em> error when trying to instantiate the application on the following line.</p>
  
  <pre><code>const app = express();
  </code></pre>
  
  <p>Peculiarly the original import (without the alias) works.</p>
  
  <p>What exactly is imported using the import statement without the alias, when no default export is defined? I would think it is the whole module, but it does not seems so.</p>