使用Node.js的minify压缩脚本时遇“Unexpected identifier tryToCatch”错误求助
解决minify工具执行时的ES模块语法错误
问题重现
执行压缩命令:
minify script.js > script.min.js
触发错误:
/node_modules/bin/minify.js:3 import "tryToCatch" from "try-to-catch" Unexpected identifier
原因
该错误源于Node.js环境无法解析ES模块的import语法:要么你的Node版本过低(低于v14.13.0),要么minify工具的CLI脚本未正确配置ES模块标识,导致Node将其当作CommonJS模块处理,从而抛出语法异常。
可行解决方案
- 升级Node.js版本:切换到v14.13.0及以上的LTS版本(如v18、v20),新版本默认支持ES模块语法,无需额外配置。
- 临时修改工具配置:找到
node_modules/minify/package.json,添加"type": "module"字段(不推荐长期使用,依赖更新后会失效)。 - 指定模块模式运行:针对低版本Node,用实验性模块参数执行脚本:
node --experimental-modules node_modules/minify/bin/minify.js script.js > script.min.js - 替换压缩工具:改用兼容CommonJS的
uglify-js:- 全局安装:
npm install uglify-js -g - 执行压缩:
uglifyjs script.js -o script.min.js
- 全局安装:
内容的提问来源于stack exchange,提问作者Paul T. Rykiel
相关产品推荐
相关产品推荐

