Node社区已经开始强推es module了么?

最近想用node写一个小工具,在安装npm包的时候,各种提示包格式错误,在commonjs中不能引用EsModule,我看很多库,比如:chalkdelorainquirer等的最新版本只提供了esmodule引入,没有commonjs产物,不得已只能降低到上一个版本。

image.png

阅读 3.5k
2 个回答

肯定是趋势

假设你要写一个node项目,想使用ESM模块规范,只需要在当前项目的 package.json 里加上 type:"module"

你的这个项目在运行的时候只能用ESM的模块规范

这样就可以引入这些ESM的包了

并且也可以使用 import {} from 'xxx' 来导入一个cjs的模块


那假如你是用的cjs模块来写node,在cjs中直接导入ESM模块是报错的

可以使用动态 import() 来加载esm的模块(在node中import()不存在模块化的兼容性,EMScjs都可以用这个方法导入)

import("chalk").then((chalk) => {
  console.log(chalk.default.blue(123));
});

所以你这种情况,在不想全部都改成ESM的话,使用import()动态导入就可以了

Node.js 官方并没有鼓励这种行为,目前还只是 Sindre Sorhus 等一小撮人的个人行动。

大佬之所以是大佬,就是他们的作品往往是生态基石,给你的感受最明显而已。

不过 “Move to ESM” 这肯定是一个趋势。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题