运行 编译打字稿时未定义导出
exports is not defined when running compiled typescript
我正尝试迈出使用打字稿的第一步,但在尝试 运行 我的应用程序时遇到了问题。
我收到错误 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/**/*"]
}
运行ning tsc
,它编译并且似乎没有任何实际问题,但是当我尝试 运行 它与 node build/index.js
它崩溃了这个
build/index.js:2
Object.defineProperty(exports, "__esModule", { value: true });
^
ReferenceError: exports is not defined
感觉好像我遗漏了一些很明显的东西,但我似乎无法真正指出它,所以我遗漏了什么?
您似乎已通过在 package.json
中设置 "type": "module"
来启用 Node's ES modules,但您的 tsconfig 告诉打字稿发出与 CommonJS 兼容的代码。
要么删除 "type": "module"
,要么配置 tsconfig 以发出针对 ES 模块的代码。
我正尝试迈出使用打字稿的第一步,但在尝试 运行 我的应用程序时遇到了问题。
我收到错误 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/**/*"]
}
运行ning tsc
,它编译并且似乎没有任何实际问题,但是当我尝试 运行 它与 node build/index.js
它崩溃了这个
build/index.js:2
Object.defineProperty(exports, "__esModule", { value: true });
^
ReferenceError: exports is not defined
感觉好像我遗漏了一些很明显的东西,但我似乎无法真正指出它,所以我遗漏了什么?
您似乎已通过在 package.json
中设置 "type": "module"
来启用 Node's ES modules,但您的 tsconfig 告诉打字稿发出与 CommonJS 兼容的代码。
要么删除 "type": "module"
,要么配置 tsconfig 以发出针对 ES 模块的代码。