在 Vue.JS 项目中执行 npm run build
没想到出现了这个错误
(node:18692) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: Object.entries is not a function
既没告诉我哪一行的错误,也找不到相关有用信息。而通过npm run dev
却可以正常编译。
谷歌搜索后发现可以通过升级 Node.JS 从 6 到 12 来解决。
通过 node -v
一看果然我服务器上的就是 node 6 的版本,因此通过以下操作:
为 CentOS 系统上的包管理工具 yum 添加 NodeSource 的仓库
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
接下来,我们删除旧版本的 Node
sudo yum remove -y nodejs npm
然后安装新版本的 Node
sudo yum install nodejs
安装太慢了?
如果服务器在国内,安装速度有可能很慢。雪上加霜的是,最近中国的 nodesource 源都不可用了,如 清华 tuna 镜像:
没关系,这里提供一个方法:比如本地下载比较快,可以先把此时日志中的 rpm 地址(如 https://rpm.nodesource.com/pub_12.x/el/7/x86_64/nodejs-12.20.2-1nodesource.x86_64.rpm)拷贝下来放在地址栏打开,然后就会下载到本地。接着把这个 rpm 文件(下面用xx.rpm 代指)传到服务器:
sftp root@x.x.x.x
> put /xx/xxx/xx.rpm
然后在服务器上 xx.rpm 所在地址执行:
rpm -vih xx.rpm
即可。
检查新版本
node -v
npm -v