【问题标题】:Error "Cannot find module 'npmlog'" after "npm update -g"“npm update -g”后出现错误“找不到模块‘npmlog’”
【发布时间】:2016-04-14 15:29:15
【问题描述】:

我有 NVM 0.30.1 并用它在 Fedora 22 上安装 node.js v5.4.0(带有 NPM 3.5.4)。当我运行 npm update -g 时,我收到以下警告:

npm WARN EBUNDLEOVERRIDE Replacing bundled npm > init-package-json with new installed version
npm WARN EBUNDLEOVERRIDE Replacing bundled npm > node-gyp with new installed version
npm WARN EBUNDLEOVERRIDE Replacing bundled npm > npm-install-checks with new installed version
npm WARN EBUNDLEOVERRIDE Replacing bundled npm > npmlog with new installed version
npm WARN EBUNDLEOVERRIDE Replacing bundled npm > read-package-json with new installed version

然后,当我运行 npm 时,我得到了这个错误:

module.js:328
    throw err;
    ^

Error: Cannot find module 'npmlog'
    at Function.Module._resolveFilename (module.js:326:15)
    at Function.Module._load (module.js:277:25)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at /home/peflorencio/.nvm/versions/node/v5.4.0/lib/node_modules/npm/bin/npm-cli.js:20:13
    at Object.<anonymous> (/home/peflorencio/.nvm/versions/node/v5.4.0/lib/node_modules/npm/bin/npm-cli.js:76:3)
    at Module._compile (module.js:398:26)
    at Object.Module._extensions..js (module.js:405:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)

有谁知道它是什么以及如何解决它?

谢谢

【问题讨论】:

  • 这里有同样的问题

标签: node.js npm nvm


【解决方案1】:

init-package-json、node-gyp、npm-install-checks、npmlog、read-package-json 未正确安装。不知道为什么。

没有找到问题的根本原因,但我现在使用 hacky 方式安装了上面的软件包:

  • 回滚到之前未更新 npm 的节点版本。例如,nvm use iojs
  • cd 到安装 npm 的位置,例如 cd /home/peflorencio/.nvm/versions/node/v5.4.0/lib/node_modules/npm 并重新安装这些软件包,如 rm -rf node_modules/init-package-json &amp;&amp; npm install init-package-json 等。

【讨论】:

    【解决方案2】:

    看起来npm update -g 无法将 npm 更新到最新版本。我通过手动更新 npm 安装解决了这个问题。

    1. 安装/重新安装节点以获取捆绑的 npm
    2. 运行 npm install -g npm@3.5.4 更新全局 npm 安装
    3. 现在npm update -g 应该可以工作了

    【讨论】:

    • 请在第二步尝试“curl -0 -L npmjs.org/install.sh | sudo sh”,看看是否有帮助。
    • 为 root 工作:# npm -v 3.10.10 但不适用于 jenkins 用户:jenkins@ip-172-31-22-20:~$ npm -v module.js:471 throw err; ^
    • 错误:在 Module.require 的 Function.Module._load (module.js:417:25) 的 Function.Module._resolveFilename (module.js:469:15) 中找不到模块“npmlog” (module.js:497:17) 在需要 (internal/module.js:20:19) 在 /usr/local/bin/npm:19:13 在 Object. (/usr/local/bin/npm :75:3) 在 Module._compile (module.js:570:32) 在 Object.Module._extensions..js (module.js:579:10) 在 Module.load (module.js:487:32) 在tryModuleLoad (module.js:446:12)
    • jenkins@ip-172-31-22-20:~$ node -v v6.11.1
    【解决方案3】:

    感谢您的回答。这是一个bug,它已经在 Node v5.4.1 中修复。现在一切正常。

    【讨论】:

    • 我有 Node 5.4.1,在 npm update -g 之后它也失败了。
    【解决方案4】:

    为我解决这个问题的是

    sudo rm -rf /usr/local/lib/node_modules/
    

    然后重新安装节点(使用 npm)。

    【讨论】:

    • 这行不通......如果你只是吹嘘它,你如何使用 npm 安装东西? #!/bin/bash -eo pipefail sudo rm -rf /usr/local/lib/node_modules/ sudo npm install -g npm@latest sudo: npm: command not found Exited with code 1
    • @antony 重新安装节点本身! IIRC,我是通过从官方节点网站下载的安装程序完成的
    【解决方案5】:

    我的 Windows 10 电脑也遇到过同样的问题。在研究了解决方案之后,因为我找不到我所面临的问题的确切解决方案 找不到模块“npmlog” 我刚刚卸载了节点 js,然后删除了 'npm' 和 'npm-cache' "C:\Users\YourPCName\AppData\Roaming"

    然后,我从Node JS Website下载了最新版本的node

    并且,安装了节点js

    之后我检查了环境变量中的路径。

    最后运行命令提示符'以管理员身份运行'和npm install npm -g

    检查您的版本将显示最新版本。 'npm -v'

    我得到了最新版本 - v3.10.9

    试试这个。这应该工作。

    【讨论】:

      【解决方案6】:

      如果使用 linux 的人面临这个问题,这里是解决方案:

      截至本文发布之日,使用 Nodejs 打包的 NPM 版本不起作用。如果你安装了这个包,运行

      sudo rm -rf /usr/local/bin/npm
      sudo apt-get install node
      sudo mv /usr/bin/npm /usr/local/bin/npm
      

      新版本应该是3.10.8,老的错误不见了

      【讨论】:

        【解决方案7】:

        一些答案​​已经回答了这个问题,但我仍然想提出我自己的想法。在运行那段代码后我被告知运行npm update -g npm 后,我遇到了同样的问题,错误开始了。我通过使用节点版本管理器(nvm)解决了我的问题:

        nvm install 8
        

        注意:实际上不是 8,而是您选择的版本,例如 (6,5)。写入版本号将自动安装指定版本的稳定版。 安装后,您应该会收到一条 CLI 消息:

        Now using node v8.11.4 (npm v5.6.0) 
        

        【讨论】:

          【解决方案8】:

          如果您使用的是 Mac,请执行以下步骤进行补救(假设您已经安装了 Homebrew):

          sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*
          

          (克服bash: /usr/local/bin/npm: No such file or directory错误):

          hash -r 
          

          然后继续更新 brew(以使其小桶保持最新)和重新安装过程,链接是可选的。

          brew update
          
          brew reinstall node
          
          brew link --overwrite node
          

          您可以随时使用npm -vnode -v 来测试您是否取得了进展。如果您有 node 返回一个版本,但不是 npm,那么您需要将您的路径添加到您的环境中:

          export PATH="/usr/local/bin:$PATH"
          

          【讨论】:

          • 不要忘记在你的项目中运行npm rebuild,在这种升级发生后,它会更新 C++ 二进制文件
          【解决方案9】:

          有一个选项可以在不重新安装节点的情况下碰撞 npm。

          #### # this will remove current npm
          rm -rf /usr/local/lib/node_modules/npm/
          
          #### # install npm from sources. Version 3.5.x will be installed
          apt-get update
          apt-get install npm
          
          #### # install the newest npm version. Bumping from 3.5.X to 6.14.X goes without any issue :)
          /usr/bin/npm install npm@latest -g
          
          #### # additionally, npm with version 3.5.x is not added to $PATH, so it's not used.
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-03-04
            • 2017-01-23
            • 2014-05-25
            • 1970-01-01
            • 2016-08-22
            • 2021-12-29
            • 2018-09-16
            • 1970-01-01
            相关资源
            最近更新 更多