全局安装composer-cli后执行composer -v抛出语法错误求助
解决
composer -v执行时的SyntaxError: Unexpected identifier错误 这个问题我之前帮不少开发者解决过——本质是你的Node.js版本太低,不支持composer-cli依赖代码里用到的async/await语法,咱们一步步来搞定它:
错误原因拆解
你看到的报错里,async get(cardName) {这行代码用了ES6+的async函数特性,而Node.js 7.6.0以下的版本完全不支持这个语法。更关键的是,Hyperledger Composer(也就是composer-cli所属的项目)官方要求使用Node.js 8.x或10.x的LTS版本,旧版本的Node肯定会触发这类语法错误。
解决方案步骤
1. 先检查当前Node.js版本
打开终端执行:
node -v
如果输出的版本低于v7.6.0,那肯定是版本问题,直接进入下一步升级。
2. 升级Node.js到兼容的LTS版本
推荐用nvm(Node版本管理器)来管理Node版本,操作起来更灵活:
- 先安装nvm(安装完成后记得重启终端)
- 安装10.x的LTS稳定版(这是Composer支持的最后一批稳定Node版本):
nvm install 10.24.1 - 切换到这个版本:
nvm use 10.24.1
如果不想用nvm,也可以通过系统包管理器(比如Ubuntu的apt、Mac的brew)直接安装对应版本的Node,但nvm能避免版本冲突,更推荐。
3. 重新安装composer-cli
先卸载旧的不兼容版本:
npm uninstall -g composer-cli
然后安装稳定版的composer-cli(推荐0.20.x版本,这是项目停止维护前的最后稳定版):
npm install -g composer-cli@0.20.5
4. 验证安装结果
再次执行:
composer -v
这时候应该能正常显示composer-cli的版本信息,不会再出现语法错误了。
额外注意点
- 确保npm版本也兼容:安装Node LTS版本时会自带对应的npm,一般不需要额外升级,如果遇到npm相关报错,可以执行
npm install -g npm升级到对应兼容版本。 - 如果之前装过Composer的其他依赖包(比如
composer-rest-server),最好也一并卸载后重新安装,避免版本冲突。
内容的提问来源于stack exchange,提问作者Sriram J
相关产品推荐
相关产品推荐

