当前位置: 首页 > 知识库问答 >
问题:

es6模块到commonjs,在节点harmony标志下使用typescript

朱啸
2023-03-14

我使用的是TypeScript(1.6),节点位于--harmony标志下,因此我希望将es6模块语法转换到commonJS。

据我所知,我不能用Typescript1.6来做这件事。如果我将目标设置为es6,将模块设置为commonjs,我会得到一个TypeScript错误-

当目标为“ES6”或更高版本时,无法将模块编译为“commonjs”、“amd”、“system”或“umd”。

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

我原以为新的moduleResolution编译器选项可能会解决这个问题,但它似乎无济于事。

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

我有什么办法可以做到这一点吗?注意:我不想转换到ES5。我想让我的JS在harmony旗下作为ES6运行。谢谢!

共有1个答案

周奇
2023-03-14

TypeScript团队将为您在下一个版本中寻找的内容添加支持。你可以等几周/几个月。或者,您可以为ES6模块加载程序使用Polyfill:

  • ES6模块加载器
  • 系统JS

在网上有更多类似上面的库,只需检查哪一个为您完成工作,直到--module--targetES6得到官方支持。

tsconfig.json

{
  "compilerOptions": {
    "target":"ES6",
    "moduleResolution": "classic",
  }
}
  • ES6与生成器支持
  • 由于“moduleResolution”而没有导入填充转换:“classic”
 类似资料:
  • 长话短说,我试图在CommonJS模块中使用一个只有ES6模块入口点的npm包,即(GitHub),因为我的整个50多个模块的应用程序都是在CommonJS中构建的。根据节点文档,这样做的标准方法是使用函数。我使用以下代码尝试了这种方法: 但是,这会导致包出错,而不一定是上面的导入函数: 有没有一种方法可以绕过这个问题,这样我就可以在CommonJS模块中使用这个包了?

  • 本文向大家介绍详谈commonjs模块与es6模块的区别,包括了详谈commonjs模块与es6模块的区别的使用技巧和注意事项,需要的朋友参考一下 到目前为止,已经实习了3个月的时间了。最近在面试,在面试题里面有题目涉及到模块循环加载的知识。趁着这个机会,将commonjs模块与es6模块之间一些重要的的区别做个总结。语法上有什么区别就不具体说了,主要谈谈引用的区别。 commonjs 对于基本数

  • 问题内容: 我正在尝试使其工作,但似乎无法在SO的任何地方找到解决方案。尝试编译此单文件应用程序时: 使用命令“ tsc app.ts –module’commonjs’”,我得到以下错误(不使用– module标志给我一个额外的错误,告诉我我需要它来编译外部模块): 问题答案: TypeScript需要知道它存在。 为节点安装类型definitinos: 旧答案 遵循这两个步骤 从此处下载文件:

  • 问题内容: 我正在使用node.js和webpack创建一个包。据我了解,node.js应该包含用于管理文件的模块。但是,当我打电话时,我得到一个错误。我该怎么办? 问题答案: 与webpack捆绑在一起时,我自己遇到了这个问题,并在此线程上找到了答案。 为我解决此问题的方法是使用以下配置: 通过将目标设置为节点webpack,将进行必要的更改以捆绑节点应用程序 编辑:此答案针对的是webpack

  • 问题内容: 是否可以安装通过npm安装的节点模块,然后从casperjs脚本安装它? (我在node.js内看到了很多运行casper或phantom的帖子和工具,但这不是我想要的。) casperjs文档似乎说这是可能的,但只能使用手写玩具模块进行显示,而实际上并没有做任何事情。我要安装的实际模块是,但目前无法使任何模块正常工作,即使是内置模块也是如此。简单的例子: 给我: (我可以从中看到im

  • 问题内容: 这是我要运行的代码 这就是我得到的: module.js:340抛出错误; ^ 错误:找不到模块“ nw.gui” master/file-explorer/main.js:6:13) 我无法获得此模块。我该怎么办? 问题答案: 是NW.js(以前称为node-webkit)模块。从代码的运行时环境中运行代码时,NW.js应该提供对它的访问。 通过错误消息的外观,我认为您是直接通过No