Home > Mobile >  "require" not supported even though I'm using "import"
"require" not supported even though I'm using "import"

Time:10-07

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.

CodePudding user response:

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]

CodePudding user response:

By default, TypeScript will compile your code into ES3 JavaScript. This will cause your import to be compiled into this. You can change that behavior by switching the target in your tsconfig to ES6 or ES2015.

This way the generated JavaScript will use import instead of require and work with [email protected]

  • Related