【babel】处理node直接运行js文件,但是js文件无法使用import

本文讲述了作者在项目中如何处理Node.js版本兼容性问题,从使用mjs文件导致的return限制,到通过babel插件`@babel/plugin-transform-runtime`将chalk模块转换为CommonJS格式,以实现正常退出并避免控制台错误。
摘要由CSDN通过智能技术生成

在我的项目中有一个脚本文件时这样的

// 使用 cross-spawn 模块,执行 Git pull 命令
const spawn = require('cross-spawn')
// import chalk from 'chalk'
const chalk = require('chalk')

const log = console.log

// 判断node版本是否大于16.12.0
const nodeVersion = process.versions.node
const nodeVersionArr = nodeVersion.split('.')

const nodeVersionNum =
  Number(nodeVersionArr[0]) * 100 + Number(nodeVersionArr[1]) * 10 + Number(nodeVersionArr[2])

if (nodeVersionNum < 1720) {
  // 这边不可以直接return ,mjs格式的文件不支持return
  return log(chalk.hex('#ff00cc')(`Node.js version must be greater than 16.12.0. Aborting.`))
} else {
  log(chalk.hex('#646cff')(`Node.js version is ${nodeVersion}.`))
}

// 执行一些我需要的代码...

一开始为了兼容import,我将文件格式改为了mjs,但是mjs有一个问题就是不能使用return,这违反了我的个人习惯,我使用了process.exit(1)去代替return。
但是当nodejs走到上一个判断的时候也就是不符合我需要的你的版本的时候,process.exit(1)运行了,但是在控制台是会报错的。

有报错我就不能忍了,作为一个微小的强迫症患者,必须看到它正常退出心里才能舒服。所以我想文件又改回了js,添加了babel插件 ‘@babel/plugin-transform-runtime’,运行时转译

这个插件会帮助我
将 chalk 模块转换为 CommonJS 格式,
在 Babel 配置中启用 @babel/plugin-transform-runtime 插件,并设置 useESModules 为 false。

{
  "plugins": [
    "@babel/plugin-transform-runtime",
    {
      "absoluteRuntime": false,
      "corejs": false,
      "helpers": true,
      "regenerator": true,
      "useESModules": false
    }
  ]
}


然后这个报错就能正常退出了,这就让我很舒服

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值