编译Typescript,使其不在JavaScript中使用require()

wydwbb8l  于 2022-12-19  发布在  TypeScript
关注(0)|答案(1)|浏览(182)

用TypeScript编写一个PacMan游戏,我的app.ts文件在PacMan类的导入中如下所示:

import { PacMan } from "./pacman"

使用TypeScript 4.9.4,出于我不知道的原因,我需要配置NodeJS 18.12.1,这在WebStorm 2022.3中被编译为一行

var pacman_1 = require("./pacman");

对于这一行,我的浏览器(Firefox 108.0)抛出一个异常
参考错误:未定义require
Ireadsomestuff但老实说,我几乎什么都不懂。
我尝试了修改tsconfig.json的建议,所以我设置了"target": "es5","esModuleInterop": true,,但这并没有使浏览器有任何改进。

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "inlineSources": true,
    "esModuleInterop": true,
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules"
  ]
}

我认为问题在于module的选择。我不知道CommonJS或RequireJS或AMD是什么,也不知道如何正确配置。我不知道ES5和ES6之间的区别,所以这对我来说是猜测,或"试错"。
我以为TypeScript会编译成JavaScript。我可以将"module"配置为VanillaJS吗?或者我真的必须使用像RequireJS这样的依赖项吗?如果是这样,为什么TypeScript编译器不将该依赖项编译成结果JavaScript?

4xrmg8kj

4xrmg8kj1#

我不敢相信它这么简单和not documented in module。感谢@jabaa,我只是在我的tsconfig.json中使用"module": "es6",并修复了它。

{
  "compilerOptions": {
    "module": "es6",
    "target": "es6",
    "sourceMap": true,
    "inlineSources": true,
    "esModuleInterop": true,
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules"
  ]
}

相关问题