"require" 即使我使用 "import" 也不支持
"require" not supported even though I'm using "import"
代码:
import fetch from 'node-fetch';
错误:
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'
}
附加信息:
"node-fetch": "^3.0.0"
"@types/node-fetch": "^3.0.3"
当我尝试降级到 v2.6.2 时,我的 IDE 出现错误以安装 @types/node-fetch
,但我仍然收到该错误。
我是如何解决这个问题的:
卸载 node-fetch 和类型,
npm uninstall node-fetch
npm uninstall @types/node-fetch
安装任何 2. 版本的 node-fetch
,我使用 node-fetch@^2.6.1
和 @types/node-fetch@2.5.12
安装:
npm install node-fetch@^2.6.1
npm install --save-dev @types/node-fetch@2.5.12
默认情况下,TypeScript 会将您的代码编译成 ES3
JavaScript。这将导致您的导入在 tsconfig
到 ES6
或 ES2015
.
中被编译成 this. You can change that behavior by switching the target
这样生成的 JavaScript 将使用 import
而不是 require
并使用 node-fetch@3.x
代码:
import fetch from 'node-fetch';
错误:
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'
}
附加信息:
"node-fetch": "^3.0.0"
"@types/node-fetch": "^3.0.3"
当我尝试降级到 v2.6.2 时,我的 IDE 出现错误以安装 @types/node-fetch
,但我仍然收到该错误。
我是如何解决这个问题的:
卸载 node-fetch 和类型,
npm uninstall node-fetch
npm uninstall @types/node-fetch
安装任何 2. 版本的 node-fetch
,我使用 node-fetch@^2.6.1
和 @types/node-fetch@2.5.12
安装:
npm install node-fetch@^2.6.1
npm install --save-dev @types/node-fetch@2.5.12
默认情况下,TypeScript 会将您的代码编译成 ES3
JavaScript。这将导致您的导入在 tsconfig
到 ES6
或 ES2015
.
这样生成的 JavaScript 将使用 import
而不是 require
并使用 node-fetch@3.x