执行npm run start时出现Unexpected token '?'错误求助
Node.js v12.22.3下执行npm run start报错的原因及解决方法
环境信息
Mac系统下用nvm管理Node.js版本,当前激活版本为v12.22.3,nvm ls输出如下:
myuser@myuser-MacBook-Pro myproject-master % nvm ls -> v12.22.3 system default -> 12.22.3 (-> v12.22.3) iojs -> N/A (default) unstable -> N/A (default) node -> stable (-> v12.22.3) (default) stable -> 12.22 (-> v12.22.3) (default) lts/* -> lts/hydrogen (-> N/A) lts/argon -> v4.9.1 (-> N/A) lts/boron -> v6.17.1 (-> N/A) lts/carbon -> v8.17.0 (-> N/A) lts/dubnium -> v10.24.1 (-> N/A) lts/erbium -> v12.22.12 (-> N/A) lts/fermium -> v14.21.3 (-> N/A) lts/gallium -> v16.20.2 (-> N/A) lts/hydrogen -> v18.18.0 (-> N/A) myuser@myuser-MacBook-Pro myproject-master%
报错信息
执行npm run start后出现语法错误,具体输出:
myuser@myuser-MacBook-Pro myproject-master % npm run start > authserver@0.0.0 start /Users/myuser/Downloads/myproject-master > concurrently --kill-others "npm run build-dev && npm run serve" "npm run watch" /Users/myuser/Downloads/myproject-master/node_modules/concurrently/dist/src/command.js:78 exitCode: exitCode ?? String(signal), ^ SyntaxError: Unexpected token '?' at wrapSafe (internal/modules/cjs/loader.js:915:16) at Module._compile (internal/modules/cjs/loader.js:963:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (/Users/myuser/Downloads/myproject-master/node_modules/concurrently/dist/src/index.js:4:19) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! authserver@0.0.0 start: `concurrently --kill-others "npm run build-dev && npm run serve" "npm run watch"` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the authserver@0.0.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
原因分析
报错里的??是空值合并运算符,这个语法从Node.js v14.0.0才开始支持。你当前使用的v12.22.3不兼容该语法,但项目安装的concurrently版本过高,内部代码用到了这个新语法,导致运行时抛出语法错误。
解决方法
方案1:降级concurrently到兼容Node.js v12的版本
concurrently 6.x系列支持Node.js v12,执行以下命令替换版本:
npm uninstall concurrently npm install concurrently@6 --save-dev
完成后重新运行npm run start即可。
方案2:升级Node.js到v14及以上版本
通过nvm安装并切换到支持该语法的LTS版本,比如v14.21.3:
nvm install 14.21.3 nvm use 14.21.3
验证版本:
node -v
确认版本后重新执行npm run start。
内容的提问来源于stack exchange,提问作者वरुण
相关产品推荐
相关产品推荐

