将ESM模块与Coffeescript和Node.js结合使用

时间:2019-12-12 21:14:21

标签: node.js coffeescript es6-modules

Ecmascript模块是包装JS代码的未来,Node.js和Coffeescript都支持它们。但是我在获得他们对ESM的支持方面遇到了一些麻烦。

当前稳定节点(12.x)在标志(--experimental-modules)后面有ESM模块。 Coffeescript支持使用--nodejs将标志传递到Node。因此,使用ESM模块的几个文件:

# a.coffee
import b from './b.coffee'

b()
# b.coffee
b = ->
  console.log "Hello"

export default b

理论上,我们可以使用npx coffee --nodejs --experimental-modules a.coffee运行此代码。实际上,这会引发错误:

13:24 $ npx coffee --nodejs --experimental-modules a.coffee
(node:8923) ExperimentalWarning: The ESM module loader is experimental.
(node:8923) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
/media/projects/coffeemodules/a.coffee:1
import b from './b.coffee';
^^^^^^

SyntaxError: Cannot use import statement outside a module
...

错误和文档说有两种方法将文件标记为包含ESM模块,一种方法是使用mjs扩展名(此处不提供扩展名),另一种方法是设置"type": "module"中的package.json,这似乎也不起作用。

所以:能做到吗?有没有办法让Coffeescript和Node.js ES模块一起玩?

0 个答案:

没有答案