最近想用node写一个小工具,在安装npm包的时候,各种提示包格式错误,在commonjs中不能引用EsModule,我看很多库,比如:chalk
,del
,ora
,inquirer
等的最新版本只提供了esmodule引入,没有commonjs产物,不得已只能降低到上一个版本。
最近想用node写一个小工具,在安装npm包的时候,各种提示包格式错误,在commonjs中不能引用EsModule,我看很多库,比如:chalk
,del
,ora
,inquirer
等的最新版本只提供了esmodule引入,没有commonjs产物,不得已只能降低到上一个版本。
Node.js 官方并没有鼓励这种行为,目前还只是 Sindre Sorhus 等一小撮人的个人行动。
大佬之所以是大佬,就是他们的作品往往是生态基石,给你的感受最明显而已。
不过 “Move to ESM” 这肯定是一个趋势。
3 回答2.6k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答957 阅读✓ 已解决
1 回答2.2k 阅读
2 回答1.2k 阅读
1 回答1.1k 阅读✓ 已解决
2 回答637 阅读✓ 已解决
肯定是趋势
假设你要写一个node项目,想使用ESM模块规范,只需要在当前项目的
package.json
里加上type:"module"
你的这个项目在运行的时候只能用ESM的模块规范
这样就可以引入这些ESM的包了
并且也可以使用
import {} from 'xxx'
来导入一个cjs的模块那假如你是用的cjs模块来写node,在cjs中直接导入ESM模块是报错的
可以使用动态
import()
来加载esm的模块(在node中import()
不存在模块化的兼容性,EMS
和cjs
都可以用这个方法导入)所以你这种情况,在不想全部都改成ESM的话,使用
import()
动态导入就可以了