NextJS启动报错:Unexpected token '?' 求助排查原因
问题描述
在全新安装的Ubuntu 22.04.1 LTS系统上已安装npm和docker,执行npm run dev或npm run start启动NextJS服务器时,出现如下错误:
niklas@srv-code01:~/Desktop/Code/Javascript/NextJS/website_01$ npm run dev > website_01@0.1.0 dev > next dev /home/niklas/Desktop/Code/Javascript/NextJS/website_01/node_modules/next/dist/cli/next-dev.js:315 showAll: args["--show-all"] ?? false, ^ 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.dev (/home/niklas/Desktop/Code/Javascript/NextJS/website_01/node_modules/next/dist/lib/commands.js:10:30) at Object.<anonymous> (/home/niklas/Desktop/Code/Javascript/NextJS/website_01/node_modules/next/dist/bin/next:141:28) at Module._compile (internal/modules/cjs/loader.js:999:30)
已安装最新版npm,但无法判断错误原因,求解答。
错误原因
- 错误中的
??是空值合并运算符,该语法仅在Node.js v14.0.0及以上版本中得到支持。 - Ubuntu 22.04.1 LTS默认预装的Node.js版本可能低于v14(比如系统自带的v12.x分支),而当前使用的Next.js版本对Node.js的版本要求高于系统自带版本,导致Node.js无法识别该语法,从而抛出
SyntaxError。 - 仅更新npm无法解决问题,因为npm版本与Node.js版本绑定,单独升级npm不会提升Node.js的运行版本,所以语法兼容问题依然存在。
内容的提问来源于stack exchange,提问作者Niklas
相关产品推荐
相关产品推荐

