[运行编译的打字稿时未定义导出

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

我正在尝试开始使用打字稿,但是在尝试运行我的应用程序时遇到了问题。

我收到错误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

感觉上我似乎缺少了一些明显的东西,但是我似乎并不能真正地将手指放在上面,所以我缺少了什么?

node.js typescript tsc
1个回答
1
投票

您似乎通过在Node's ES modules中设置"type": "module"启用了package.json,但是您的tsconfig告诉打字稿发出与CommonJS兼容的代码。

要么删除"type": "module",要么配置tsconfig以发出针对ES模块的代码。

© www.soinside.com 2019 - 2024. All rights reserved.