Truffle无法编译且报错Cannot find module 'babel-register'如何解决?
错误原因
- 从报错栈可以定位到问题出在
truffle-config.js的第一行代码:该文件显式引入了babel-register模块,但当前项目的开发依赖中没有安装这个包,Node加载配置文件时找不到对应模块触发报错。 - 该问题常见于Truffle版本升级场景:Truffle v5.4及以上版本已经移除了内置的Babel系列依赖,如果你的项目是基于旧版本Truffle初始化,或者使用了带Babel配置的第三方模板,就会出现依赖缺失的问题。
修复方案
分两种场景处理即可:
情况一:项目需要使用Babel转译ES高版本语法
在项目根目录执行以下命令安装所需依赖:
npm i -D @babel/core @babel/register @babel/preset-env
安装完成后在项目根目录新增.babelrc配置文件,写入基础配置:
{ "presets": ["@babel/preset-env"] }
配置完成后重新执行Truffle相关命令即可正常运行。
情况二:项目不需要Babel转译
绝大多数普通Truffle项目都不需要额外配置Babel,直接打开truffle-config.js,删除第一行的require('babel-register')代码即可解决问题,无需安装任何额外依赖。
内容的提问来源于stack exchange,提问作者Soyaya
相关产品推荐
相关产品推荐

