即使我使用“导入”,也不支持“require”[重复]

问题描述 投票:0回答:2

代码:

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
时出现错误,我安装了该错误,但我仍然收到该错误。

javascript typescript fetch
2个回答
2
投票

我如何解决这个问题:

卸载node-fetch和类型,

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

安装任何 2. 版本的

node-fetch
,我将
node-fetch@^2.6.1
@types/[email protected]

一起使用

安装:

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

为什么?

因为 Chalk 已切换到 ESM,因此不支持它的项目必须使用版本 4。阅读此处了解更多信息。


0
投票

默认情况下,TypeScript 会将您的代码编译为

ES3
JavaScript。这将导致您的导入被编译到 this 中。您可以通过将 tsconfig 中的
target
切换为
ES6
ES2015
来更改该行为。

这样生成的 JavaScript 将使用

import
而不是
require
并与
[email protected]

一起使用
© www.soinside.com 2019 - 2024. All rights reserved.