React启动报invalid or unexpexted token错误,重拉Git可临时解决求根因
问题说明
我在Ubuntu 20.04系统中搭建了一个React项目,完成部分开发工作后将代码推送至Git仓库后关机。次日执行npm start命令启动项目时,出现invalid or unexpected token报错;删除本地项目文件夹后从Git仓库重新克隆即可正常运行,但隔天启动又会出现相同报错,重复删除重拉操作即可恢复。
可能的根本原因
- 项目依赖目录
node_modules在开关机过程中出现文件损坏,该目录默认不会提交到Git仓库,因此重拉代码重新安装依赖后即可恢复正常 - 使用nvm管理Node版本时,重启后默认Node版本自动切换,和项目适配的Node版本不匹配,导致已编译的依赖二进制文件无法正常识别
- 项目存放在临时目录、加密目录或同步盘目录中,开关机时文件读写异常导致部分配置/依赖文件被修改
- 系统安全工具/开机清理任务误修改或截断了项目中的JS文件,导致语法解析报错
排查步骤
- 下次出现报错时不要直接删除项目,先执行
git status和git diff命令,检查是否有未被Git跟踪的配置文件(比如.env、babel.config.js等)被意外修改 - 根据报错提示定位到对应报错文件,打开查看内容是否存在乱码、截断情况,确认是否为文件损坏导致的语法错误
- 执行
node -v查看当前Node版本,和项目要求的版本是否一致,确认是否存在版本切换问题 - 检查项目存放路径是否属于临时目录、同步盘目录等特殊路径
修复方案
- 若确认是
node_modules损坏:可每次启动前执行rm -rf node_modules && npm install重新安装依赖,也可换成pnpm或yarn包管理器,二者的依赖完整性校验机制更完善,可大幅降低依赖损坏概率 - 升级npm到v8以上稳定版本,旧版本npm存在依赖安装时文件损坏的已知bug
- 若存在Node版本切换问题,执行
nvm alias default <项目适配的Node版本号>设置默认版本,避免重启后版本漂移 - 将项目目录加入系统安全工具、清理任务的白名单,避免文件被误改
- 不要将项目存放在临时目录、同步盘或加密盘分区中
内容的提问来源于stack exchange,提问作者Hasnain Nisan
相关产品推荐
相关产品推荐

