#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. Нет, к сожалению, это не работает. Все равно получаю ту же ошибку, когда меняю стиль импорта.