npm -v 返回分段错误

npm -v 返回分段错误

nodejs,npm 之前运行正常。 什么时候我尝试升级它

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

然后输入npm -v,它会抛出"Segmentation fault"。我重新启动系统并再次输入相同的命令,它再次显示相同的错误。所以我从中删除了 nodejs 和 npm 包Ubuntu 14.04通过ubuntu 软件中心并重新安装。

然后我尝试安装电话间隙使用命令通过 npm 包

sudo npm install -g phonegap

但它没有返回任何进度。所以我检查了 npm 版本,它抛出了错误“分段错误”。我也试了sudo npm -v。它什么也没返回。

所以我决定使用命令从 ubuntu 14.04 中删除 npm

sudo apt-get remove npm 

然后我输入sudo npm install -g phonegap它不能抛出 npm 包不可用。

Nodejs

我的问题是:

  1. 该包不存在,那么为什么我输入时npm -v,它返回“Segmenatation Fault”
  2. 如果没有删除包,那么当我输入时sudo npm install -g phonegap,为什么无法安装 phonegap。

帮我解决这个问题。或者提供一种方法来卸载 nodejs、npm、phonegap、expressjs,或者使用不太干净的方法重新安装。

编辑:

电话间隙

编辑1:

根据@chj1axr0的回答,脚本在nodejs安装后抛出错误

在此处输入图片描述

答案1

我在 Google 上搜索了一下,似乎(对某些人来说)最新的 Ubuntu 软件版本的 Nodejs 中有一个错误,导致了你遇到的分段错误

安装它的最佳方法是从源代码获取节点并进行编译。

我已经设置了一个简单的脚本Github 要点这样就可以解决它了。

#!/bin/sh
# Update System
echo "System Update"
apt-get -y update
echo "Update completed"
# Installing the applications needed to build Nodejs
apt-get -y install libssl-dev git-core pkg-config build-essential curl gcc g++ checkinstall
# Download & Unpack Node.js - v7.3.0
echo "Download Node.js - v7.3.0"
mkdir /tmp/node-install
cd /tmp/node-install
wget https://nodejs.org/dist/latest/node-v7.3.0.tar.gz
tar -zxf node-v7.3.0.tar.gz
echo "Node.js download & unpack completed"
# Install Node.js
echo "Compiling and installing Node.js"
cd node-v7.3.0
./configure && make && checkinstall --install=yes --pkgname=nodejs --pkgversion "7.3.0" --default
echo "Node.js install completed! Deleting The /tmp files"
rm -rf /tmp/node-install
echo "If you have made it this far in the script with no errors popping up all is well have a good day" 

确保并使用sudo chmod a+x /path/to/file/install_nodejs_latest.sh以确保它将启动。然后使用sudo sh /path/to/file/install_nodejs_latest.sh启动它。(它必须使用 sudo 运行才能正确执行所有命令)

该脚本删除旧的 nodejs、npm 和所有 node 模块。

它将在脚本末尾更新 npm。

建议偶尔这样做sudo npm install -g npm(如果你想要最新的),因为 npm 升级速度比 node js 快

脚本完成运行后npm -vnode -v如果弹出版本,则运行sudo npm install -g phonegap,,如果您将来想要更新任何模块,您所要做的就是再次安装它,它将覆盖前一个模块sudo npm install -g cordovasudo npm install -g less快递适用于基于应用程序的应用程序,因此不建议全局安装

答案2

  1. 尝试使用 删除apt-get remove --purge。也许有些文件还残留着。

  2. 检查 的输出which npm

  3. 你是如何安装 nodejs 的?我认为上游版本将 npm 与 node 一起打包,而在 ubuntu 中它们是分开的。如果你安装了上游 npm,使用 apt 删除 npm 只会将你切换到使用上游 npm。如果问题出在启动时 node/npm 加载的损坏包,切换将无法解决问题。也许从你的系统中删除所有 node/npm 内容并重新开始会解决。谁知道呢。这是节点。

答案3

我有同样的问题并解决了它。(我的操作系统是 ubuntu 19.4)

出现此问题的原因是您分别安装了 nodejs 和 npm。

所以首先,你应该删除nodejs和npm。

sudo apt --auto-remove purge npm
sudo apt --auto-remove purge nodejs

然后只安装nodejs

sudo apt-get install nodejs

最后,执行以下命令检查 nodejs 和 npm

node -v
npm -v

注意:由于 nodejs 和 npm 是一起打包的,因此您不需要单独安装 npm。

相关内容