一、概述
先看一段代码:
// index.js
import createMathOperation from './.internal/createMathOperation.js'
const add = createMathOperation((augend, addend) => augend + addend, 0)
console.log(add(6, 4));
export default add
复制代码
当我们在终端执行 node index.js 时,我们可以得到一个报错:

也就是说,我们不可以直接运行这段包含 ESM 的代码。
Node verison 13.2.0 起开始正式支持 ES Modules 特性,有两种方法可以应用:
- 在
package.json中设置"type": "module" - 将文件后缀改变为
mjs
根据第二个方法,为了便利化调试,我开发了一个命令行工具—— uunode,它会将 js文件在不覆盖原文件的情况下转化为 mjs, 并执行相应的mjs 文件,并返回结果。
二、安装
npm 使用:
npm install uunode -g
yarn 使用:
yarn add uunode -g
(linux 显示没有权限的话请在前面加上 sudo, 即 sudo npm install uunode -g 或者 sudo yarn add uunode -g)
三、使用示例
uunode [example.js]

如示例所示,当我们运行 uunode [example.js] 时,它会产生一个 .uunode 的文件夹,里面储存着将 mjs 文件(默认不保留文件,你可以加 -k 参数保留文件)。并执行 node .uunode/example.js 返回相应的结果。
你还可以使用 uunode [example.js] -s 去掉 console。
参数支持项:
| 参数值 | 含义 |
|---|---|
| -s | 去除 console |
| -k | 保留生产后的菜单 |
四、未来
在探索如何写 uunode 的过程中发现了 Deno,也是由 nodejs 的作者Ryan Dahl开发的。
node 不能处理 ESM 模块的问题,将在 Deno 解决。更多关于 deno 的内容,请参考这篇文章。
五、更多
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)