【问题标题】:Npm install cannot find module 'semver'Npm install 找不到模块'semver'
【发布时间】:2016-02-25 12:41:00
【问题描述】:

我不能通过 NodeJS 中的命令提示符使用 npm install。我在运行 npm install 时遇到这些错误:

module.js:339
    throw err;
    ^
Error: Cannot find module 'semver'
    at Function.Module._resolveFilename (module.js:337:15)
    at Function.Module._load (module.js:287:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (C:\Users\admin\AppData\Roaming\npm\node_modules\npm\l
ib\config\defaults.js:6:14)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)

【问题讨论】:

  • 我遇到了同样的问题或者,你可以使用 yarn,而不是 npm
  • 你是用yarn来安装package.json吗?
  • 重新安装npm
  • 不同,但可能相关:https://stackoverflow.com/questions/53545800#62740853 -- 有用吗?
  • 我在 ubuntu 中升级节点并关闭终端时偶然发现了这个问题。但我忘记关闭并再次打开 Visual Studio。重新打开后,问题就消失了。 :)

标签: javascript node.js mean-stack


【解决方案1】:

我有同样的错误。 npm uninstall npm -grm -rf node_modules 没有帮助我,因为当我尝试时,我得到了 Error: Cannot find module 'semver'。但我通过这些步骤解决了我的问题(这将删除您可能正在使用的其他全局模块):

  • sudo rm -rf /usr/local/lib/node_modules
  • sudo rm -rf ~/.npm
  • brew uninstall --force node
  • brew install node

希望这对遇到类似问题的人有所帮助。

【讨论】:

  • 在运行 El Capitan 的两台不同机器上使用它,在两种情况下都有效。
  • 使用brew uninstall --force node 删除所有版本
  • 只需重新安装 npm。 curl -0 -L https://npmjs.org/install.sh | sudo sh 删除 npm 文件夹后
  • 如果 Yarn 已经安装,brew uninstall --ignore-dependencies node 对我有用,而 brew uninstall --force node 没有。
  • 盲目粘贴命令是我的错,但sudo rm -rf /usr/local/lib/node_modules 导致我丢失了我使用的全局模块,例如 gulp 和 selenium 服务器。 对此感到厌倦
【解决方案2】:

我在这里遇到了同样的问题。

如果在您运行 brew install yarn 之后立即发生这种情况,请尝试运行 yarn global add npm 并且瞧 - 已修复!

【讨论】:

  • 这个解决方案对我来说效果很好,并且比这里的替代方案简单得多。如果安装在升级/安装过程中出现权限/访问错误,我认为 yarn 可以破坏 npm。
【解决方案3】:

在 MS Windows 上,解决方案是删除 %APPDATA%\npm 并重新安装 node

【讨论】:

  • 我希望我能为 Windows 加倍投票。有个问题:AppData 目录默认是隐藏的,所以我认为它实际上并没有安装在这个位置。
  • 在windows上只需修复无需重新安装
  • @samayo 在您安装的 Windows 上,有一个修复选项。抱歉,这是一个上下文评论。
  • 这种方法也适用于我的 64 位 Windows 8.1 Enterprise 笔记本电脑。我不得不删除“npm”和“npm-cache”文件夹,然后卸载和安装新节点。
  • 请有人提供关于如何在 Microsoft Windows 上实现这一目标的完整简明详尽的教程?
【解决方案4】:

如果您在 Linux 服务器中,请退出服务器并重新 ssh

【讨论】:

  • 嘿 - 我认为这是一个愚蠢的建议,但没有什么可失去的,我开始了一个新的外壳,它像宣传的那样工作。谢谢!
  • 这也适用于本地终端会话(在 Ubuntu 20 上测试)!一年过去了,npm 还是有这个问题……
  • 在使用 n 更改节点版本(在 WSL 中)后出现此问题,此答案应该更高;)
  • 老实说,这为我解决了问题。我也有同样的想法@keithpjolley - 谢谢你们
【解决方案5】:

在昨天运行brew install yarn 之后,我也有这个。至少在那之前一切都很好。

我运行rm -rf node_modules 并尝试重新安装,但没有npm 命令起作用。

最后我采取了相当简单的步骤,通过 Mac OS X 的官方 Node 安装程序重新安装 Node。

https://nodejs.org/en/download/

现在一切都很好。刚回到目录,运行npm install,就成功了。

【讨论】:

  • npm install 为我做了。我正在一一安装所有依赖项,但npm install 一次完成了所有依赖项。谢谢。
  • brew install yarnbrew install yarn之后我也遇到过这种情况
  • 从官方 osx 安装程序重新安装 node.js 有帮助。谢谢!
  • brew install yarn 之后也发生在我身上!!到底是什么,纱线
【解决方案6】:

Arch Linux 上,我的诀窍是:

sudo pacman -Rs npm
sudo pacman -S npm

【讨论】:

  • 我不得不使用sudo pacman -Rdd 删除忽略依赖项,但它并没有解决我的问题。从 Mathias Braun 的回答中的 arch 包安装 semver。
【解决方案7】:

在 Ubuntu 上,如果您希望使用 apt 通过默认存储库管理 Node,最好同时安装 nodejsnpm

很可能您正在使用的 npm 版本在与您安装的 Node JS 版本不一致的特定位置期待 semver。如果只有一个版本的nodejs 和一个版本的npm,并且它们都是使用默认存储库安装的,那么这应该可以完美运行。

这是我使用主要 Ubuntu 存储库让 Node 和 npm 工作的最佳指南:

  1. sudo apt-get purge nodejs --auto-removesudo apt-get purge npm --auto-remove
  2. whereis node:删除所有版本的节点,一次一个。重复直到此命令在node: 之后返回空白。
  3. sudo apt-get install nodejs
  4. node --version:应该返回... no such file or directory
  5. nodejs --version:应该返回v1x.x.x。这是apt安装的版本。它可能比 Node JS 网站上提供的最新版本要晚。
  6. sudo apt-get install npm
  7. npm --version:它将使用apt安装的nodejs并正常工作。

【讨论】:

  • 我发现这个答案对 aws 中的 Ubuntu 20.x.x 很有用......
  • 第 1 步成功了,太棒了。 Ubuntu 20.04
  • 在 ubuntu 20.10 上的第 3 步出现问题 - 只要我执行第 2 步,节点就会开始存在
  • 这个答案对我帮助很大。对于使用 Ubuntu 20.04 的虚拟机的任何人,我使用 nvm 成功安装了最新的节点(v 16)和 npm(v 7)。 docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/…
  • 2b:对 npm 做同样的事情?
【解决方案8】:

刚刚在 Arch Linux 4.13.3 上遇到了这个问题,我通过简单地重新安装 semver 解决了这个问题:

pacman -S semver

【讨论】:

    【解决方案9】:

    我遇到了同样的问题,我解决的方法是执行

    PATH="$PATH"
    

    在终端中,问题是终端保留了nodejs的旧路径而不是使用新路径。

    【讨论】:

    • 很高兴听到:)
    【解决方案10】:

    实际上,它是在引用之前存储的模块。

    解决方法:删除nodejs安装目录下的npm-cache/npm文件夹。 在 Windows 中,它位于 C:/User/Username/Appdata/Roaming/npm(或 npm_cache)中。 并尝试重新安装。

    在任何操作系统中都可以这样做。

    【讨论】:

    • 就是这样。我卸载了节点。然后从/Appdata/Roaming 中删除npmnpm_cache。然后再次安装节点。似乎应该归咎于缓存。
    【解决方案11】:

    在我的 macOS(10.13.6) 上,当我执行以下命令时

    npm install -g react-native-cli
    

    我收到了这个错误

    Error: Cannot find module 'semver'
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
        at Function.Module._load (internal/modules/cjs/loader.js:562:25)
        at Module.require (internal/modules/cjs/loader.js:690:17)
        at require (internal/modules/cjs/helpers.js:25:18)
        at Object.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/unsupported.js:2:14)
        at Module._compile (internal/modules/cjs/loader.js:776:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
        at Module.load (internal/modules/cjs/loader.js:653:32)
        at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
        at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    

    执行命令后错误得到解决

    yarn global add npm
    

    @Ashoor 提议

    【讨论】:

      【解决方案12】:

      对我来说,这发生在我全局安装 yarn 之后。 要解决此问题,请使用 yarn 安装 npm 并完成。

      yarn global add npm
      

      【讨论】:

        【解决方案13】:

        在 Windows 上,再次下载 Node's MSI 并进行“修复”对我有用。

        【讨论】:

          【解决方案14】:

          只需卸载 node js 然后使用 nvm 重新安装它。你的问题将得到解决。我是 debian 10 用户。

          ma​​hedi@debain:~$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh |重击

          执行命令后。关闭您的终端并重新打开,然后运行此命令以安装 node js 最新版本。

          ma​​hedi@debain:~$ nvm install v14.15.5

          现在通过输入 node -v 来检查

          【讨论】:

          • 有效,谢谢!!你让我免于很多挫折
          【解决方案15】:

          我遇到了同样的问题,但它是由损坏的package-lock.json 文件引起的。

          删除package-lock.json 并运行npm install 再次为我修复了它。

          【讨论】:

            【解决方案16】:

            只要确保 semver 已安装:npm install -g semver

            【讨论】:

            • npm 不工作,所以无法通过 npm 安装 semver。最好的解决方案是使用 yarn 安装 npm 或缺少包
            • @NFpeter 我遇到了与问题中所述完全相同的问题并以这种方式修复了它,因此 npm 确实有效(至少在我的情况下)。
            【解决方案17】:

            这在 Ubuntu 上对我有用(2020 年 10 月的最新版本)

            我必须先从 bash 源获取代码:

            curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
            

            这获得了最新版本的节点,它更新了我的库并消除了“semver”错误。

            【讨论】:

              【解决方案18】:

              我遇到了同样的错误,我解决了。

              删除 package-lock.json 文件和 node_modules 文件夹然后npm install

              【讨论】:

                【解决方案19】:

                对于arch linux

                sudo pacman -Rsc -n nodejs
                sudo pacman -Sy nodejs
                sudo pacman -Sy npm
                

                在这里找到:https://github.com/npm/npm/issues/15558

                【讨论】:

                  【解决方案20】:

                  当我使用较低版本的节点运行 npm install 时遇到了这个问题。后来当我升级到最新版本的node并运行gulp时,它显示了这个错误。

                  要解决,删除 node_modules 并重新运行 npm install。然后gulp 运行良好。

                  【讨论】:

                    【解决方案21】:
                    sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
                    sudo rm -rf /usr/local/lib/node*
                    sudo rm -rf /usr/local/bin/node*
                    sudo rm -rf /usr/local/include/node*
                    
                    sudo apt-get purge nodejs npm
                    sudo apt autoremove
                    

                    然后安装node和npm

                    【讨论】:

                      【解决方案22】:

                      只需删除您的 node_modules

                      rm -rf node_modules
                      

                      yarn
                      

                      npm install
                      

                      【讨论】:

                      • 为我工作,谢谢!
                      【解决方案23】:

                      只需删除 /node_modules 文件夹,然后重试。 ;)

                      您可以使用npm rm 将其删除。

                      您也可以在 GitHub 上查看this issue。 要更具体地了解 unnistal,请尝试关注this

                      卸载

                      很遗憾看到你离开。

                      sudo npm uninstall npm -g 或者,如果失败,

                      sudo make uninstall 更严重的卸载

                      通常,以上说明就足够了。这将删除 npm, 但留下你安装的任何东西。

                      如果您想删除所有已安装的软件包, 然后你可以使用 npm ls 命令找到它们,然后 npm rm 到 删除它们。

                      要删除 npm 0.x 遗留的垃圾,您可以使用包含的 clean-old.sh 脚本文件。您可以像这样方便地运行它:

                      npm explore npm -g -- sh scripts/clean-old.sh npm 使用两个 配置文件,一个用于每个用户的配置,另一个用于全局 (每个用户)配置。您可以通过以下方式查看它们:

                      npm config get userconfig # 默认为 ~/.npmrc npm config get globalconfig # 默认为 /usr/local/etc/npmrc 卸载 npm 确实 默认情况下不删除配置文件。您必须删除它们 如果你想让它们消失,你自己手动。请注意,这意味着 未来的 npm 安装不会记住您的设置 选择。

                      【讨论】:

                      • 更新了我的答案。现在就试试。如果它不起作用,请为我测试一些东西。将 package.json 复制到另一个文件夹并尝试使用 npm install。
                      • 你能粘贴你的 package.json 吗?
                      • { "name": "workspace", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" },“依赖项”:{“body-parser”:“~1.13.2”,“bson”:“^0.2.22”,“cookie-parser”:“~1.3.5”,“debug”:“~ 2.2.0”、“快递”:“~4.13.1”、“hbs”:“~3.1.0”、“僧侣”:“^1.0.1”、“摩根”:“~1.6.1”、“ serve-favicon": "~2.3.0" }, "engines": { "node": "4.2.2" } }
                      • 您是否尝试在另一个文件夹中使用您的 package.json 运行 npm install?
                      • 我必须卸载到 node.js,在安装 node.js 之后......我必须使用 mean.that 时间我必须安装 npm intall 命令创建示例应用程序,但我得到同样的错误...请给我一些解决方案....
                      【解决方案24】:

                      我终于明白了!是的,您必须卸载/删除所有文件并重新安装。但有些文件路径太长,无法在卸载过程中删除。 Node 中的文件路径太长,可能无法删除。您必须重命名文件路径。

                      卸载 Node 后,使用命令提示符,导航到 ...\Appdata\roaming\(使用错误消息中的路径)。尝试使用 del npm 删除该文件夹。然后,如果它不允许您删除文件夹,请开始将下一条错误消息中文件路径中的文件夹重命名为“a”或其他短名称。您可能必须对路径上的多个文件夹执行此操作。那你应该可以删除了!然后重新安装节点,它应该可以工作了。

                      【讨论】:

                        【解决方案25】:

                        提醒一下可执行npm 通过node env 执行:

                        xb@dnxb:/tmp$ type -a npm
                        npm is /usr/bin/npm
                        npm is /bin/npm
                        xb@dnxb:/tmp$ realpath /usr/bin/npm /bin/npm
                        /usr/share/npm/bin/npm-cli.js
                        /usr/share/npm/bin/npm-cli.js
                        xb@dnxb:/tmp$ 
                        xb@dnxb:/tmp$ head -1 /usr/share/npm/bin/npm-cli.js
                        #!/usr/bin/env node
                        

                        我可以检查type -a选择了哪个节点,第一行具有最高优先级,即如果我运行/usr/local/bin/node /usr/share/npm/bin/npm-cli.js会得到同样的错误,但如果我运行/usr/bin/node /usr/share/npm/bin/npm-cli.js不会出错:

                        xb@dnxb:/tmp$ type -a node
                        node is /usr/local/bin/node
                        node is /usr/bin/node
                        node is /bin/node
                        xb@dnxb:/tmp$ realpath /usr/local/bin/node
                        /usr/local/bin/node
                        xb@dnxb:/tmp$ realpath /usr/bin/node
                        /usr/bin/node
                        xb@dnxb:/tmp$ realpath /bin/node
                        /usr/bin/node
                        xb@dnxb:/tmp$ 
                        

                        有 2 个基于 realpath 的唯一节点 exe。如果您有类似的情况,那么您需要了解如何删除不需要/损坏的节点 exe,例如sudo rm /usr/local/bin/node 或操纵环境 $PATH

                        【讨论】:

                          【解决方案26】:

                          就我而言,只需重新运行 brew install yarn 即可解决问题。

                          【讨论】:

                            【解决方案27】:

                            brew 在我的 MacOs Sierra 10.12.6 上安装 yarn 后,我遇到了同样的问题。 (在 brew update self 之后第一次尝试安装,并显示一条消息“Homebrew 必须在 Ruby 2.3 下运行!您正在运行 2.0.0。(RuntimeError)”。所以我重新运行它。)

                            所以我使用 n manager 重新安装 npm。

                            • 通过带有空参数的“n”命令切换到另一个节点版本(对于我的情况是 8.0)
                            • 或通过“n x.x.x”安装新的,其中 x.x.x 是节点版本号(我需要 6.9.1)
                            • 通过“n rm x.x.x”删除工作版本,其中 x.x.x 是节点版本号。如果需要,请使用 sudo
                            • 通过“n x.x.x”安装工作版本,其中 x.x.x 是节点版本号。如果需要,请使用 sudo
                            • 切换到节点的工作版本。 (参考第一步)

                            我认为问题可能是节点安装在 sudo for case 下。

                            【讨论】:

                              【解决方案28】:

                              我在 AWS Linux 上安装时遇到了同样的问题。我必须用sudo 安装它。所以为了解决这个问题,我按照本文中的第 3 步(确保获得最新版本的节点)

                              https://www.hostingadvice.com/how-to/update-node-js-latest-version/

                              wget https://nodejs.org/dist/vx.x.x/node-vx.x.x-linux-x64.tar.xz
                              tar -C /home/aUser/node --strip-components 1 -xJf node-vx.x.x-linux.x64.tar.xz
                              

                              但将其安装到用户的主目录/home/aUser/node。然后将该路径添加到我的 PATH 中。

                              export PATH=/home/aUser/node/bin:$PATH

                              之后我可以毫无问题地进行npm install

                              【讨论】:

                                【解决方案29】:

                                我在更高版本的 cli 上运行项目时遇到了这个问题。要解决这个问题,您可以简单地注释掉 @angular-devkit/build-angular 模块,然后您必须再次通过

                                重新安装它

                                npm install @angular-devkit/build-angular --save

                                【讨论】:

                                  【解决方案30】:

                                  对我来说,这是在我的项目中从 gulp 3 升级到 gulp 4 时发生的。 所以,当我运行“gulp watch”命令时,它给了我同样的错误。

                                  这可能是由于与我全局安装的 gulp 相比版本不匹配。

                                  所以,要么用“-g”全局标志升级 gulp 会有所帮助,否则我在下面遵循这个

                                  但是,我在项目中使用了“./node_modules/.bin/gulp watch”。这确保了 gulp 需要的所有依赖项仅来自 node_modules。

                                  【讨论】:

                                    猜你喜欢
                                    • 2015-12-16
                                    • 2015-02-26
                                    • 2022-10-23
                                    • 2020-01-17
                                    • 2023-02-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2016-12-16
                                    相关资源
                                    最近更新 更多