【问题标题】:npm update broke npmnpm 更新破坏了 npm
【发布时间】:2018-10-23 07:25:42
【问题描述】:

我刚刚关注 this guide 更新 npm(因为我的节点摄像头模块无法正常工作)并运行

npm install -g npm

但现在我的 npm install 似乎完全坏了。如果我只是输入

npm

npm update

我明白了

/usr/local/lib/node_modules/npm/bin/npm-cli.js:79 让通知器 = 要求('更新通知器')({pkg}) ^^^

SyntaxError:块范围的声明(let、const、函数、类) 尚不支持外部严格模式

我试过了

sudo apt-get remove npm
sudo apt-get install npm

但重新安装没有帮助。

我认为我的 node 版本需要从 v4.8.2 升级,但我认为只有 npm 才有可能?

【问题讨论】:

    标签: node.js linux npm


    【解决方案1】:

    你可能已经安装了两次 npm,一次在/usr/local/bin,另一次在/usr/bin

    首先,您可以尝试通过升级npm来移除已安装的npm模块。尝试运行:

    • rm -r /usr/local/lib/node_modules/npm
    • /usr/bin/npm uninstall npm

    一旦您拥有运行版本的 npm,请在升级 npm 之前安装更新版本的 node。然后,删除您的 linux 发行版。

    如果第一个解决方案不起作用,另一种方法是安装最新版本的node(当然不使用npm)

    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install -y nodejs
    

    【讨论】:

    • 正在运行:/usr/bin/npm 卸载 npm 给我:/usr/bin/npm:没有这样的文件或目录正在运行:/usr/local/bin/npm 卸载 npm 给我:/usr /local/lib/node_modules/npm/bin/npm-cli.js:79 let notifier = require('update-notifier')({pkg}) ^^^ SyntaxError: Block-scoped declarations (let, const, function, class) 在严格模式之外尚不支持
    • @Wayneio rm -r /usr/local/lib/node_modules/npm?
    • @MaximeChéramy 谢谢,它的工作。你拯救了我的一天。
    • 我只需要rm -r /usr/local/lib/node_modules/npm。谢谢!
    【解决方案2】:

    对我来说,重新安装 npm 有效:

    npm install -g npm
    

    【讨论】:

      【解决方案3】:

      其他答案在 Ubuntu 上对我不起作用,最终陷入死胡同,npm 损坏或无法重新安装/更新 npm。

      我使用的激进解决方案:

      1/ 删除节点的所有痕迹。按照这个页面,使用底部的 remove.sh 脚本: http://kselax.ru/en/npm-errors/

      2/ 然后使用最新的安装脚本从头开始重新安装 nodejs + npm: https://github.com/nodesource/distributions/blob/master/README.md

      【讨论】:

        【解决方案4】:

        如果您使用 nvm 安装 npm 和 node,请尝试此解决方案。

        1. 了解当前使用的节点和 npm 安装在哪里:

          which node

          就我而言,它是/home/ubuntu/.nvm/versions/node/

        2. 现在,使用以下命令删除所有版本的节点:

          sudo rm -rf /home/ubuntu/.nvm/versions/node/

        3. 您现在可以使用 nvm 安装所需版本的 node 和 npm。

          nvm install 4.9.1

        【讨论】:

          【解决方案5】:

          对于那些使用 google 找到此内容的人,您可能会想通过以下方式安装 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - 然后用sudo apt install nodejs 安装。

          但是,无论如何,我还是遇到了这个问题。请记住,npm@6 放弃了对 node@nvm 进行安装。

          Via the nvm instructions on their GitHub: 你可以添加安装脚本

          curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
          

          然后你就可以开始使用nvm了。您可能需要重新启动终端,因此在安装后,退出终端,再次启动它,并检查 nvm 是否安装了 nvm --version

          如果一切顺利,您可以使用 npm 安装任何特定版本的节点。截至撰写本文时,node 的最新稳定版本是 10.15.3,所以

           nvm install 10.15.3
          

          当然,如果您需要帮助,nvm --help 有一个选项列表。

          【讨论】:

            【解决方案6】:

            (centos 的解决方案....我认为它也适用于 ubuntu):

            为了彻底清理我的 centos 机器,我还做了以下操作 - 我的用户是“centos”,我的家是 /home/centos:

            sudo rm -rf /usr/local/bin/npm 
            sudo rm -rf /usr/local/bin/npx
            sudo rm -rf /usr/lib/node_modules/
            sudo rm -rf /usr/bin/npm
            sudo rm -r /usr/local/lib/node_modules/
            sudo rm -rf /usr/local/bin/node
            sudo rm -rf /usr/bin/npm
            sudo rm -rf /usr/lib/node_modules/
            rm -rf /home/centos/.npm/
            rm -rf /home/centos/node*
            rm -rf /home/centos/.node-gyp/
            sudo rm -rf /root/.npm/
            sudo rm /usr/bin/node
            sudo rm -rf /usr/local/include/node
            

            此时我才重新安装:

            wget http://nodejs.org/dist/latest/node-v11.4.0-linux-x64.tar.gz
            sudo tar --strip-components 1 -xzvf node-v* -C /usr/local
            

            一切又恢复了:

            node --version
            v11.4.0
            npm --version
            6.4.1
            

            【讨论】:

            猜你喜欢
            • 2021-01-14
            • 2017-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-17
            • 2017-05-14
            相关资源
            最近更新 更多