javascript - es6 模块到 commonjs,在 node harmony 标志下使用 typescript

标签 javascript node.js typescript babeljs typescript1.6

我在 --harmony 标志下使用带有 Node 的 TypeScript (1.6),所以我想将 es6 模块语法转换为 commonjs。

据我所知,我无法使用 TypeScript 1.6 执行此操作。如果我将目标设置为 es6,并将模块设置为 commonjs,我会收到 TypeScript 错误 -

Cannot compile modules into 'commonjs', 'amd', 'system' or 'umd' when targeting 'ES6' or higher.

为什么 TypeScript 不能编译成带有 ES6 目标的 commonjs?我想很多人都想这样做,因为 Node 还不支持 ES6 模块。

我原以为新的 moduleResolution 编译器选项可能会解决这个问题,但它似乎没有做任何事情。

目前,我不得不使用 babel 来将模块语法转换为 commonjs,但我想从我的构建中删除 babel,以便我可以利用源映射。

有什么办法可以实现吗?注意:我不想转译为 ES5。我希望我的 JS 在和谐标志下作为 ES6 运行。谢谢!

最佳答案

TypeScript 团队将在 the next release 中添加对您正在寻找的内容的支持。 .您可以等待数周/数月。或者,您可以为 ES6 模块加载器使用 Polyfill:

网上有更多类似上述的库,只需检查哪个库适合您,直到对 --module--target es6 的官方支持到来。

更新

tsconfig.json

{
  "compilerOptions": {
    "target":"ES6",
    "moduleResolution": "classic",
  }
}
  • ES6 生成器支持
  • 没有 import 由于 "moduleResolution": "经典"

关于javascript - es6 模块到 commonjs,在 node harmony 标志下使用 typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919946/

相关文章:

javascript - 使用 HTML5/CSS3 而不是 JavaScript 滚动卷轴/羊皮纸

javascript - 如何在本地项目中使用jsdoc

javascript - 如何在 Node.js 中将 npm 请求模块与 bluebird 一起使用

node.js - Meteor 如何接收对 MongoDB 查询结果的更新?

Angular 2 - 过滤管回空

javascript - 使用 jquery/javascript 启用 "disabled Multiselect"

javascript - ASP.NET跨域模态窗口(window.showModalDialog)-参数值始终为 "undefined"

reactjs - 类型 'typeof class' 不可分配给类型 'ComponentType<any>'

javascript - RxJS Observable 立即返回数据,为什么?

javascript - react native : reload app or force rerender