前言
傳聞在JavaScript與TypeScript武林中,曾有兩大絕世心法:CommonJS與ESM。兩派高手比肩而立,各自稱霸一方,江湖一度風平浪靜。
豈料,時局突變。ESM逐步修成陽春白雪之姿,登堂入室,成為主流正統。CommonJS則漸入下風,功力不濟,逐漸退出主舞臺。
話說某日,一位前端少俠夜觀天象,打算在項目中配置vite.config.js或vite.config.ts。本欲安穩修煉,卻因一招不慎,引入require觸犯禁忌,頓時屏幕黑閃、終端哀鳴:
? 錯誤 [ERR_REQUIRE_ESM]:你這個 require,不識我這 ESM?
少俠眉頭緊鎖,神情恍惚,仿佛被“代碼反噬術”擊中,功力盡失,調試無門,懷疑人生。
幸好你手持此篇《ESM內功心法》,得以步入正道。待少俠修煉完畢,自可暢行江湖,無懼require的逆襲,從此bug不侵,打包如風。
簡介
先來普及一門武林秘籍,分清兩派修行之道:
- require():江湖流傳多年的 CommonJS 內功心法,招式老練,直擊依賴要害,出招迅速,信手拈來。
- ESM(ECMAScript Module):新晉正統心法,W3C 親授,講究模塊隔離、按需異步、規范至上,是未來之光、江湖正道。
自 Node.js 12 起(尤其 Node 14 以后?