У меня проблема с некоторыми импортами в NodeJS. Я хочу использовать новые функции Typescript 3.8, такие как приватные поля: # myPrivateField
Я не знаю, как правильно импортировать модуль «машинопись» в моем классе. Я перепробовал много вариантов, но решить проблему не смог.
Мои файлы:
пакет. json
{
"name": "test",
"scripts": {
"start": "tsc && node --experimental-modules --es-module-specifier-resolution=node index.js"
},
"dependencies": {
"@types/node": "^13.13.2",
"app-root-path": "^3.0.0",
"fs-extra": "^9.0.0",
"tsutils": "^3.17.1"
},
"devDependencies": {
"ts-node": "~8.3.0",
"typescript": "^3.8.3"
},
"type": "module"
}
tsconfig. json
{
"compilerOptions": {
"lib": [
"ESNext",
"es2016",
"dom",
"es5"
],
"module": "esnext",
"moduleResolution": "Node",
"sourceMap": true,
"target": "es6",
"typeRoots": [
"node_modules/@types"
]
}
}
main.ts
// import ts = require("typescript");
import * as ts from "typescript";
export class Main {
node: ts.Node;
#test = 'zzz';
constructor() {}
process(): void {
ts.forEachChild(this.node, function cb() {
});
console.log('#test', this.#test);
}
}
const main = new Main();
main.process();
При использовании этого кода при запуске npm run start
появляется ошибка TypeError: ts.forEachChild is not a function
Без строки с ts.forEachClid()
он правильно записывает значение частного поля # test.
Если я попытаюсь заменить import * as ts from "typescript";
на import ts = require("typescript");
, у меня будет ошибка TS1202: Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead
Конечно, я пробовал много изменений в tsconfig. json и в package. json (с `" type "=" module "), но решить эту проблему невозможно.
Я даже пытался заменить "module": "esnext"
на "module": "commonjs"
, но у меня ошибка exports is not defined
.
Примечание: Это не указывается c для модуля "машинопись". У меня та же проблема с другими модулями, такими как "fs-extra", которые выполняют экспорт не так, как большинство модулей classi c NodeJS.
Например, экспорт модуля "машинопись" с export = ts
.
Я тоже нашел эту ссылку, но она мне не сильно помогла: https://www.typescriptlang.org/docs/handbook/modules.html
Моя nodeJs версия - 13,3. 0 и моя машинописная версия 3.8.3 Спасибо за вашу помощь