意外的令牌导出:拥抱 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