当前位置: 首页 > 后端技术 > Node.js

解决在node终端下运行js文件不支持ES6语法的问题

时间:2023-04-04 01:16:41 Node.js

最近在写一些简单的测试代码时,为了方便在node终端直接执行,发现部分ES6语法不支持,记录一下解决现象,新建class.js文件后添加如下代码//constructorclassPerson{constructor(name,age,sex){this.name=name;这个。年龄=年龄;this.sex=性别;}getInfo(){返回`名字:${this.name},年龄:${this.age},性别:${this.sex}`;}}varjone=newPerson('jone',18,'man');console.log(jone.name);exportdefaultPerson;在终端运行代码会提示如下错误,无法识别export关键字,因为node环境下的模块导入导出是CommonJS规范实现的,使用的关键字分别是require和exports。(其他流行的有AMD风格的requirejs和CMD风格的seajs。)查看ES6支持的语法,我们可以查看node环境支持的ES6语法。可以先通过node-v命令查看版本,可以看到我本地的版本是10.16.2然后全局安装npm包npminstall-ges-checker安装完成后可以运行es-checker命令用于检查节点的支持率和详细信息。可以看到如下输出,最后一个说明不支持modulemethodbabel怎么解决?可以添加babel命令将代码转换成支持的写法。在项目的project目录下,也就是在package.json同级目录下执行npminstall--save-devbabel-clibabel-preset-es2015babel-preset-es2017其中babel-cli允许我们在终端中使用babel命令,就像webpack对应的webpack-cli包,而babel-preset-*是babel转换代码时依赖的前置规则插件Collection,安装完成后配置和在同一目录下使用babel,新建一个.babelrc文件,在文件{"presets":["es2015","es2017"],"plugins":[]}中的presets字段中输入如下配置来添加我们的转换规则,你可以在上面提到的babel-preset-中写上相应的关键字作为缩写,一些定义转换规则的插件可以在plugins中配置。配置完成后,我可以在终端使用babel转换我的代码,直接执行babel命令babelclass.js就可以看到我们的代码已经转换成ES2015版本了。如下PSD:\git\study\mytest>babelsrc/Object/class.js'usestrict';Object.defineProperty(exports,"__esModule",{value:true});var_createClass=function(){functiondefineProperties(target,props){for(vari=0;i