You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 16.04.4 LTS下npm-cli.js块级作用域声明语法错误求助

解决Ubuntu 16.04.4 LTS中npm运行的SyntaxError问题

我来帮你搞定这个问题——你遇到的语法错误本质是Node.js版本太老,不兼容npm新版本里用到的ES6块级作用域语法(比如let声明)。Ubuntu 16.04默认预装的Node.js是v4.x系列,而现在的npm新版本至少需要Node.js v6.14.4或更高版本才能正常运行。

下面是具体的解决步骤,推荐用最稳妥的方式来升级:

1. 先确认当前Node.js版本

打开终端,运行这条命令看看你当前的Node版本:

node -v

如果输出是v4.x或者更低,那百分百是版本不兼容导致的问题。

2. 用nvm升级Node.js(推荐)

nvm(Node版本管理器)可以帮你在系统里同时管理多个Node版本,不会干扰系统自带的Node工具,非常灵活:

安装nvm

在终端执行以下命令:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

安装完成后,关闭当前终端再重新打开,或者执行下面的命令让nvm立即生效:

source ~/.bashrc

安装兼容的Node.js版本

比如安装长期支持的v14.x版本(它和npm v6.x完美兼容,足够应对绝大多数开发场景):

nvm install 14

安装好后,把这个版本设为默认:

nvm alias default 14

验证升级成功

再次运行这两条命令:

node -v
npm -v

如果分别输出v14.x.xv6.x.x左右的版本,就说明升级成功了,再运行你的npm命令应该就不会再出现那个语法错误了。

替代方案:直接升级系统级Node.js(不推荐)

如果你不想用nvm,也可以通过官方PPA来替换系统自带的Node.js:

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

不过这种方式会覆盖系统原生的Node.js,可能影响依赖它的系统工具,所以优先推荐用nvm的方式。

补充下错误原因:报错的那行代码let notifier = require('update-notifier')({pkg})用了ES6的let声明,而老版本的Node.js在非严格模式下不支持块级作用域声明,升级Node.js后就能正常解析这个语法了。

内容的提问来源于stack exchange,提问作者cs guy

火山引擎 最新活动