我在通过以下方式删除后重新安装了 nodejs 和 npm
apt install nodejs
apt install npm
但如果我把
npm -v
我收到中止错误和核心转储
1: 0x948a70 node::Abort() [node]
2: 0x997982 node::options_parser::GetOptions(v8::FunctionCallbackInfo<v8::Value> const&) [node]
3: 0xba5e0a [node]
4: 0xba69b9 v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [node]
5: 0x99aae14fc5d
Aborted (core dumped)
我已经更新、升级、重新启动等,但它就是不起作用。
node --version
出现分段错误
v11.8.0
Segmentation fault (core dumped)
我使用 n 安装了 node 11.8 后卸载了 npm,但不知何故它似乎正在启动,所以我猜 npm 的依赖项有问题?
答案1
发生这种情况是因为 Node 和 Node.js 的 npm 版本冲突。您可以尝试使用以下命令删除 Node.js:
sudo apt-get remove nodejs
之后,您需要运行 autoremove 命令来删除任何不再需要的剩余依赖项:
sudo apt autoremove
运行这些命令应该可以解决问题。
答案2
是的,我添加了一个修正,现在看到一条评论暗示了原因,让我澄清一下我的错误。这真是太混乱了。
如果你运行 node,你会得到“哪个 nodejs”指向的 /usr/bin/nodejs 版本,但如果你询问“哪个节点”,你会得到 /usr/local/bin/node
这种混淆可能是 npm 失败的原因,因为它使用了错误版本的节点。
开箱即用的 apt list nodejs 显示 nodejs/disco 10.15.2~dfsg-1 amd64,而哪个节点或哪个nodejs并调用它都出现缺失未找到的情况。
在 apt install npm 之后我得到这些结果,其中 npm = /usr/bin/npm
npm -v = 5.8.0
哪个节点 = /usr/bin/node
哪个 nodejs = /usr/bin/nodejs
节点 --version = v10.15.2
nodejs --version=v10.15.2
接下来我通过 npm install -gn 安装“n”,并添加 n 11.8.0,这是唯一对我来说仍然正常工作的版本。
所有节点仍然指向 10.15.2,但它安装到 /usr/local/n/versions/node/11.8.0
它的 bin 中有节点和 npm 的链接
npm->../lib/node_modules/npm/bin/npm-cli.js
因此‘n’没有正确安装版本。
我想我最终会从 nodejs 下载链接手动获取(我选择的 node 版本,也就是最后一个真正能用的版本)node-v11.8.0-linux-x64,并构建一个正确的安装程序 [复制并链接起来]。我只是也用它来开发,而且有 npm 和“n”很方便,但它不起作用,所以?