Search code examples
javascripttypescriptfetch

"require" not supported even though I'm using "import"


Code:

import fetch from 'node-fetch';

Error:

Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\youar_mnnijcy\Documents\Work\Typescript\CoredV5-TS\node_modules\node-fetch\src\index.js from C:\Users\youar_mnnijcy\Documents\Work\Typescript\CoredV5-TS\src\commands\general\ping.ts not supported.
Instead change the require of index.js in C:\Users\youar_mnnijcy\Documents\Work\Typescript\CoredV5-TS\src\commands\general\ping.ts to a dynamic import() which is available in all CommonJS modules.    
    at Object.<anonymous> (C:\Users\youar_mnnijcy\Documents\Work\Typescript\CoredV5-TS\src\commands\general\ping.ts:15:38)
    at Module.m._compile (C:\Users\youar_mnnijcy\AppData\Local\Yarn\Data\global\node_modules\ts-node\dist\index.js:704:29)
    at Object.require.extensions.<computed> [as .ts] (C:\Users\youar_mnnijcy\AppData\Local\Yarn\Data\global\node_modules\ts-node\dist\index.js:706:16)
    at bot.<anonymous> (C:\Users\youar_mnnijcy\Documents\Work\Typescript\CoredV5-TS\src\classes\bot.ts:43:44)
    at Generator.next (<anonymous>)
    at fulfilled (C:\Users\youar_mnnijcy\Documents\Work\Typescript\CoredV5-TS\src\classes\bot.ts:5:58) {
  code: 'ERR_REQUIRE_ESM'
}

Additional Information:

"node-fetch": "^3.0.0"

"@types/node-fetch": "^3.0.3"

When I tried downgrading to v2.6.2, I got an error from my IDE to install @types/node-fetch, which I installed, but I still get that error.


Solution

  • How I fixed this problem:

    Uninstall node-fetch and the types,

    npm uninstall node-fetch npm uninstall @types/node-fetch

    Install any 2. version of node-fetch, I used node-fetch@^2.6.1 with @types/[email protected]

    Installation:

    npm install node-fetch@^2.6.1 npm install --save-dev @types/[email protected]

    Why?

    Because Chalk has switched to ESM so projects that do not support it must use version 4. Read Here for more information.