export не определен при запуске скомпилированной машинописи - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь сделать свои первые шаги в работе с машинописью, и у меня возникла проблема при попытке запустить мое приложение.

Я получаю ошибку ReferenceError: exports is not defined

код, который у меня есть, довольно прост:

// --src/changeset.ts
export enum ChangeAction {
  ADD,
  DELETE,
  MODIFY
}

export class Changeset {
  constructor(
    public version: Number,
    public content: String,
    public path: String,
    public action: ChangeAction
  ) {}
}

// --src/index.ts
import { Changeset, ChangeAction } from "./changeset";

const set = new Changeset(0, "Hello world", "/dev/null", ChangeAction.ADD);
set.version = 0;

console.log("Hello World! " + set.version);

// --tsconfig.json
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "build"
  },
  "include": ["src/**/*"]
}

работает tsc, он компилируется и, кажется, работает без особых проблем, однако, когда я пытаюсь запустить его с node build/index.js, он вылетает с этим

build/index.js:2
Object.defineProperty(exports, "__esModule", { value: true });
                      ^

ReferenceError: exports is not defined

Такое ощущение, что я упускаю что-то совершенно очевидное, но я не могу сказать, что могу это указать, так чего мне не хватает?

1 Ответ

1 голос
/ 11 января 2020

Вы, кажется, включили ES-модули Node , установив "type": "module" в своем package.json, но ваш tsconfig говорит, что машинопись использует код, совместимый с Common JS.

. удалите "type": "module" или настройте tsconfig для генерации кода для модулей ES.

...