如何在Node.js中正确配置实验性ECMAScript模块以使用import/export
统一前后端ES模块语法的实用进展
哎,这个痛点我太懂了!用MERN栈开发的时候,前脚在React里写着import/export的ES6语法,后脚切到Node/Express后端就得换成module.exports/require的CommonJS写法,来回切换不仅容易写错,还要靠Babel转译才能统一风格,确实挺折腾人的。
不过你盼着的原生支持ES模块的事儿,现在已经落地成熟啦!虽然Node.js 10刚发布那会儿这功能还在实验阶段,但后续版本一直在迭代完善:
- 从Node.js 12开始,原生ES模块支持进入稳定状态,只要把文件后缀改成
.mjs,或者在项目的package.json里添加"type": "module"字段,就能直接在Node环境里用import/export语法,完全不用依赖Babel转译 - 如果需要兼容旧的CommonJS模块,也可以用
import()动态导入的方式,或者在CommonJS文件里通过require()导入ES模块(不过后者有一些使用细节需要注意)
你提到去年看到James的文章相关内容,估计他当时应该是在分享Node.js对ES模块的实验性支持进展吧?现在这个功能已经足够稳定,完全可以在你的MERN项目里尝试用起来,能省不少转译环节的麻烦呢!
内容的提问来源于stack exchange,提问作者Leo Li
相关产品推荐
相关产品推荐

