Невозможно импортировать модули даже с набором ‘esModuleInterop’, я получаю «Этот модуль объявлен с использованием ‘export =’ и может использоваться только […]»

#node.js #typescript #import

#node.js #машинописный текст #импортировать

Вопрос:

Я использую WebStorm и у меня есть следующее tsconfig.json :

 {  "compileOnSave": false,  "compilerOptions": {  "baseUrl": "./",  "outDir": "./dist/out-tsc",  "sourceMap": true,  "declaration": false,  "module": "esnext",  "moduleResolution": "node",  "esModuleInterop": true,  "allowSyntheticDefaultImports": true,  "emitDecoratorMetadata": true,  "experimentalDecorators": true,  "target": "es2017",  "typeRoots": [  "node_modules/@types"  ],  "lib": [  "es2017",  "dom"  ]  },  "files": [  "/Users/ich/WebstormProjects/BridgeScript/HopBridgeScript.ts"  ], }  

Когда я сейчас пытаюсь запустить свой код с tsc HopBridgeScript.tsamp;amp; node HopBridgeScript.js помощью, я получаю

 ich@Dominiks-MBP BridgeScript % tsc HopBridgeScript.tsamp;amp; node HopBridgeScript.js node_modules/@hop-protocol/sdk/dist/src/watchers/BaseWatcher.d.ts:2:8 - error TS1259: Module '"/Users/ich/WebstormProjects/BridgeScript/node_modules/eventemitter3/index"' can only be default-imported using the 'esModuleInterop' flag  2 import EventEmitter from 'eventemitter3';  ~~~~~~~~~~~~   node_modules/eventemitter3/index.d.ts:134:1  134 export = EventEmitter;  ~~~~~~~~~~~~~~~~~~~~~~  This module is declared with using 'export =', and can only be used with a default import when using the 'esModuleInterop' flag.   Found 1 error.  

Это начало кода:

 import { providers, Wallet, BigNumber } from "ethers"; import { Hop, Chain } from "@hop-protocol/sdk"; import { formatUnits } from "ethers/lib/utils"; import { getEthPriceNow } from "get-eth-price";  ...  

Комментарии:

1. Измените import EventEmitter from 'eventemitter3' на import * as EventEmitter from 'eventemitter3' ИЛИ измените esModuleInterop флаг на tsconfig.json false

2. Когда я меняюсь esModuleInterop на false , никаких изменений нет. Может быть, мой tsconfig.json даже не используется, когда я начинаю и компилирую с tsc HopBridgeScript.tsamp;amp; node HopBridgeScript.js ? И я не импортирую EventEmitter явно. Должен ли я добавить import * as EventEmitter from 'eventemitter3' ?

3. попробуйте, да. Я не знаю подробного фона, но esmoduleINterop флаг в основном меняется между * default стилями и импортируется.

4. Нет, к сожалению, это не работает. Все равно получаю ту же ошибку, когда меняю стиль импорта.