意外的令牌導出:擁抱ES6 模組支援
嘗試執行ES6 程式碼時遇到「意外的代幣匯出」錯誤可能會令人困惑問題。當執行時間環境缺乏對您正在使用的 EcmaScript 模組 (ESM) 語法的支援時,就會發生此錯誤。
了解 ESM:
ESM,通常稱為「ES6 Modules」引入了 JavaScript 的模組系統,支援程式碼封裝和更輕鬆的依賴管理。它利用export關鍵字來定義模組,使程式碼組織更加明確。
ESM的支援:
v14.13.0以下的NodeJS版本不支援ESM,而是依賴在 CommonJS 模組上,它使用 module.exports 屬性語法。但是,較新的 NodeJS 版本(v14.13.0 及更高版本)支援 ESM,前提是明確啟用它。
解決方案:
在NodeJS 中啟用ESM(v14 .13.0 ):
編輯專案的package.json檔案並將“type”屬性設為“module”:
{ ... "type": "module", ... }
使用CommonJS 模組語法重構:
對於較舊的NodeJS 版本,重構程式碼以使用CommonJS 模組語法:
// Example ES6 module export class MyClass { constructor() { console.log("es6"); } } // CommonJS module equivalent module.exports = class MyClass { constructor() { console.log("commonJs"); } };
利用 TypeScript 和 ts-node:
考慮將 TypeScript 與 ts-node 或 ts-node-dev npm 套件一起使用。 TypeScript 在編譯時轉換為 JavaScript,使 ES6 程式碼與較舊的 NodeJS 版本相容。
將ESM 轉換為CommonJS:
使用esbuild(透過npm 安裝)來轉換你的程式碼ES6 JavaScript 轉CommonJS 格式,允許其在沒有本機ESM 支援的環境中運作。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3