title: Error: require() of ES modules is not supported when importing node-fetch
body: <p>I'm creating a program to analyze security camera streams and got stuck on the very first line. At the moment my .js file has nothing but the import of node-fetch and it gives me an error message. What am I doing wrong?</p>
  <p>Running Ubuntu 20.04.2 LTS in Windows Subsystem for Linux.</p>
  <p>Node version:</p>
  <pre><code>user@MYLLYTIN:~/CAMSERVER$ node -v
  v14.17.6
  </code></pre>
  <p>node-fetch package version:</p>
  <pre><code>user@MYLLYTIN:~/CAMSERVER$ npm v node-fetch
  
  node-fetch@3.0.0 | MIT | deps: 2 | versions: 63
  A light-weight module that brings Fetch API to node.js
  https://github.com/node-fetch/node-fetch
  
  keywords: fetch, http, promise, request, curl, wget, xhr, whatwg
  
  dist
  .tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz
  .shasum: 79da7146a520036f2c5f644e4a26095f17e411ea
  .integrity: sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==
  .unpackedSize: 75.9 kB
  
  dependencies:
  data-uri-to-buffer: ^3.0.1 fetch-blob: ^3.1.2         
  
  maintainers:
  - endless &lt;jimmy@warting.se&gt;
  - bitinn &lt;bitinn@gmail.com&gt;
  - timothygu &lt;timothygu99@gmail.com&gt;
  - akepinski &lt;npm@kepinski.ch&gt;
  
  dist-tags:
  latest: 3.0.0        next: 3.0.0-beta.10  
  
  published 3 days ago by endless &lt;jimmy@warting.se&gt;
  </code></pre>
  <p>esm package version:</p>
  <pre><code>user@MYLLYTIN:~/CAMSERVER$ npm v esm
  
  esm@3.2.25 | MIT | deps: none | versions: 140
  Tomorrow's ECMAScript modules today!
  https://github.com/standard-things/esm#readme
  
  keywords: commonjs, ecmascript, export, import, modules, node, require
  
  dist
  .tarball: https://registry.npmjs.org/esm/-/esm-3.2.25.tgz
  .shasum: 342c18c29d56157688ba5ce31f8431fbb795cc10
  .integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
  .unpackedSize: 308.6 kB
  
  maintainers:
  - jdalton &lt;john.david.dalton@gmail.com&gt;
  
  dist-tags:
  latest: 3.2.25  
  
  published over a year ago by jdalton &lt;john.david.dalton@gmail.com&gt;
  </code></pre>
  <p>Contents of the .js file (literally nothing but the import):</p>
  <pre><code>user@MYLLYTIN:~/CAMSERVER$ cat server.js 
  import fetch from &quot;node-fetch&quot;;
  </code></pre>
  <p>Result:</p>
  <pre><code>user@MYLLYTIN:~/CAMSERVER$ node -r esm server.js 
  /home/user/CAMSERVER/node_modules/node-fetch/src/index.js:1
  Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/user/CAMSERVER/node_modules/node-fetch/src/index.js
  require() of ES modules is not supported.
  require() of /home/user/CAMSERVER/node_modules/node-fetch/src/index.js from /home/user/CAMSERVER/server.js is an ES module file as it is a .js file whose nearest parent package.json contains &quot;type&quot;: &quot;module&quot; which defines all .js files in that package scope as ES modules.
  Instead rename index.js to end in .cjs, change the requiring code to use import(), or remove &quot;type&quot;: &quot;module&quot; from /home/user/CAMSERVER/node_modules/node-fetch/package.json.
  
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1089:13) {
    code: 'ERR_REQUIRE_ESM'
  }
  user@MYLLYTIN:~/CAMSERVER$ 
  </code></pre>