所有 NPM 命令都会出现 TypeError 错误:类扩展值未定义不是构造函数或 null

Mor*_*red 37 macos node.js npm

n我多年来一直使用安装节点,没有出现任何问题。现在,在我的 Big Sur mac 上,我从 v14.17.6 更新到 v16。此更新没有发生任何事件并node -v显示“16.13.1”。

\n

但是之后,我运行的任何 npm 命令都会立即出现以下错误:

\n
\xc2\xbb npm -v\nTypeError: Class extends value undefined is not a constructor or null\n    at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/socks-proxy-agent/dist/agent.js:114:44)\n    at Module._compile (node:internal/modules/cjs/loader:1097:14)\n    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)\n    at Module.load (node:internal/modules/cjs/loader:975:32)\n    at Function.Module._load (node:internal/modules/cjs/loader:822:12)\n    at Module.require (node:internal/modules/cjs/loader:999:19)\n    at require (node:internal/modules/cjs/helpers:102:18)\n    at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/socks-proxy-agent/dist/index.js:5:33)\n    at Module._compile (node:internal/modules/cjs/loader:1097:14)\n    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)\n    at Module.load (node:internal/modules/cjs/loader:975:32)\n    at Function.Module._load (node:internal/modules/cjs/loader:822:12)\n    at Module.require (node:internal/modules/cjs/loader:999:19)\n    at require (node:internal/modules/cjs/helpers:102:18)\n    at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/make-fetch-happen/lib/agent.js:161:25)\n    at Module._compile (node:internal/modules/cjs/loader:1097:14)\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试了早期的 v16 版本 (16.9.1),n latest当前版本为 17.2.0,并且任何 npm 命令都会立即出现完全相同的错误。将我的节点版本降回 14.17.6,并npm恢复正常工作。

\n

关于如何解决这个问题有什么想法吗?

\n

小智 28

我遇到过同样的问题。有一些较旧的 npm 安装,当我运行 Windows 安装程序时它失败了。

我做了以下事情:

  • 使用安装程序(https://nodejs.org/en/download/)删除node,npm
  • C:\Users\%username%\AppData\Roaming\npm-cache从和 nvm 文件夹中删除(如果有)。
  • 删除C:\Program Files\node(如果有)
  • 删除 NPM 和 NODE 的环境变量所有设置。在用户和系统范围内都有多个条目。

使用安装程序重新安装所有内容。


小智 8

我可能会遇到这样的情况,卸载后你必须手动删除nodejs安装目录中的node_modules目录。然后进行安装。


Bra*_*rad 5

我通过回滚到 Node.js 14.15.1 版本(我以前有过)、运行npm install -g npm、然后更新到 Node.js 16,然后npm install -g npm再次运行来解决这个问题。


Mor*_*red 0

我意识到,尽管大多数 npm 命令(run-v等)都有效,但有些命令npm publish甚至在 14.17.6 上也会抛出新错误。最终我所做的就是对 n 和所有版本的 node 进行核攻击

rm -rf /usr/local/n
Run Code Online (Sandbox Code Playgroud)

然后从 node.js 手动安装最新的节点版本,然后执行 anpm i -g nn latest。现在我回到了良好的状态,我所有的 npm 命令似乎都可以工作,而且我只有两个版本的 Node,而不是我多年来积累的 15 个左右。

暂时不回答这个问题,以防其他人有不那么激烈的解决方案。