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

2024-04-16

我正在尝试迈出使用打字稿的第一步,但在尝试运行我的应用程序时遇到了问题。

我收到错误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/**/*"]
}

running tsc,它编译并且似乎工作没有任何实际问题,但是当我尝试运行它时node build/index.js它崩溃了

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

ReferenceError: exports is not defined

感觉好像我错过了一些非常明显的东西,但我似乎无法真正指出它,那么我错过了什么?


您似乎已启用Node的ES模块 https://nodejs.org/docs/latest-v13.x/api/esm.html#esm_package_json_type_field通过设置"type": "module"在你的package.json,但是你的 tsconfig 告诉 typescript 发出与 CommonJS 兼容的代码。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行编译的打字稿时未定义导出 的相关文章

随机推荐