`npm` busted - 如何克服模块未找到、意外令牌错误

`npm` busted - how to get past module-not-found, unexpected-token errors

我已经使用 nvm-windows 安装了 Node 和 NPM。

当我尝试 运行 npm install 时,出现错误 Unexpected token '.',然后是 运行.

的完整日志的路径

我检查了完整的日志,意外的标记来自一个只包含文本的文件 ../workspace/libnpmfund

看起来是 Windows 上的 Unix 符号链接。

我尝试删除文件并重新安装 libnpmfund

npm i -g libnpmfund

但我从中得到的输出是 Cannot find module 'libnpmfund'

我尝试更改我使用的节点和 npm 的版本,但无济于事。

我该如何解决这个问题?我怎么会落入这个烂摊子?

(仅供参考,有一堆这样的符号链接,我把它们都删除了,打算一个一个正确地重新安装它们。)

在 macOS 下(显然这也适用于 Windows),我所做的基本上是删除 node_modules 下的所有内容,删除 package.jsonpackage-lock.json , 从零开始。

似乎当 npm 被严重混淆到停止寻找自己的模块的地步(你无法安装任何东西,因为 npm 坏了......), 'best' 替代方案似乎是从头开始做所有事情。

这似乎不是 真正的 解决方案,但最终只是一个解决方法 — 一个可能对遇到同样问题的其他人有帮助的快速解决方案出一个更明显的解决方案...

我正在为 windows 使用 nvm 并安装了以下内容。

节点 15.0.1 和 Npm 7.0.3

出于某种原因,我将 npm 更新到 8.8.0,然后抱怨它需要 Node 16 或更高版本。

我使用 nvm 安装了最新版本的 Node,即 Node 18.1.0,其中包括 Npm 8.8.0,我通过 nvm 切换到使用此版本。

这是我 运行 遇到同样错误的地方,我无法更新 npm 或使用它安装任何东西。

我通过将所有与 npm 相关的文件从我的 v15 文件夹 (...\AppData\Roaming\nvm\v15.0.1) 复制到 v18 文件夹 (...\AppData\Roaming\nvm\v18.1.0) 设法解决了这个问题).

复制的文件: npm、npm.cmd、npx、npx.cmd 和 \node_modules\npm(整个 npm 文件夹)

之后,我又去了。

我知道不是每个人都会有可用的 npm 工作副本,但我想关键是通过 nvm 替换与节点一起安装的 npm 版本对我有用。

显然 npm 已损坏,因此请尝试通过脚本安装它或下载 zip/tgz.