【问题标题】:npm install fails because node-gyp is failing. HOW to Fix?npm install 失败,因为 node-gyp 失败。怎么修?
【发布时间】:2017-08-23 01:43:05
【问题描述】:

我最近尝试为我们的项目进行全新安装。但是现在 npm install 在 Ubuntu 17.04 上失败了。我已经更改了我正在使用的 node、npm、node-gyp 和 python 的版本,但没有成功。

这是由于对 node-gyp 的更改还是其他原因? 运行:

 node-gyp rebuild

给我:

    gyp info it worked if it ends with ok
    gyp info using node-gyp@3.6.2
    gyp info using node@7.10.1 | linux | x64
    gyp info spawn /usr/bin/python2
    gyp info spawn args [ '/usr/local/lib/node_modules/node-gyp/gyp/gyp_main.py',
    gyp info spawn args   'binding.gyp',
    gyp info spawn args   '-f',
    gyp info spawn args   'make',
    gyp info spawn args   '-I',
    gyp info spawn args   '/home/joel/workspace/Tracker3/build/config.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/usr/local/lib/node_modules/node-gyp/addon.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/home/joel/.node-gyp/7.10.1/include/node/common.gypi',
    gyp info spawn args   '-Dlibrary=shared_library',
    gyp info spawn args   '-Dvisibility=default',
    gyp info spawn args   '-Dnode_root_dir=/home/joel/.node-gyp/7.10.1',
    gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/node-gyp',
    gyp info spawn args   '-Dnode_lib_file=/home/joel/.node-gyp/7.10.1/<(target_arch)/node.lib',
    gyp info spawn args   '-Dmodule_root_dir=/home/joel/workspace/Tracker3',
    gyp info spawn args   '-Dnode_engine=v8',
    gyp info spawn args   '--depth=.',
    gyp info spawn args   '--no-parallel',
    gyp info spawn args   '--generator-output',
    gyp info spawn args   'build',
    gyp info spawn args   '-Goutput_dir=.' ]
    gyp info spawn make
    gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
    make: Entering directory '/home/joel/workspace/Tracker3/build'
    make: *** No rule to make target 'Release/obj.target/binding/src/binding.o', needed by 'Release/obj.target/binding.node'.  Stop.
    make: Leaving directory '/home/joel/workspace/Tracker3/build'
    gyp ERR! build error 
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/node-gyp/lib/build.js:258:23)
    gyp ERR! stack     at emitTwo (events.js:106:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:194:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
    gyp ERR! System Linux 4.11.3-041103-generic
    gyp ERR! command "/home/joel/.nvm/versions/node/v7.10.1/bin/node" "/usr/local/bin/node-gyp" "rebuild"
    gyp ERR! cwd /home/joel/workspace/Tracker3
    gyp ERR! node -v v7.10.1
    gyp ERR! node-gyp -v v3.6.2
    gyp ERR! not ok

有没有人知道是什么原因造成的?以及如何调试和修复?

【问题讨论】:

    标签: node.js npm node-gyp


    【解决方案1】:

    在 ubuntu 上运行这个命令sudo apt-get install build-essential,然后再试一次。

    另请参阅here,因为它在此处推荐。

    您可以查看here 了解有关如何重新启动的更多信息。

    【讨论】:

    • 感谢您的建议。我已经安装了 build-essential,但还是重新启动了。删除 ~/.node-gyp、node_modules、~/.npmrc 并再次尝试。还是不行!我还安装了 apt-get install libkrb5-dev 作为一种可能的解决方案。但没有任何效果。
    • 我在另一台有同样问题的机器上有这个项目。所以也许这与最近对 Ubuntu 17.04 的更新有关——我会让我的大脑停止被煎炸,并在另一个小时内再试一次。当这个 S 突然发生时,我讨厌 ti。
    • 我在 RYZEN 机器上运行,所以我什至更新到最新的内核 4.12.0 看看是否有帮助,但没有改变。
    • 一定有办法的,别烧脑了! )) @JoelParke
    • @JoelParke 你试过这样安装吗? sudo npm i -g node-gyp --unsafe-perm
    【解决方案2】:

    这就是答案!事实证明,项目的根目录中有一个遗留的“binding.gyp”导致所有问题,因为它无法构建任何东西!!!当然,我的第一个假设是因为包裹是完全错误的......

    简化并删除所有内容:

    {
      "name": "Tracker3",
      "version": "3.1.0",
      "description": "A todo list and shared tracker",
      "keywords": [
        "angular",
        "angular4",
        "webpack",
        "typescript"
      ],
      "author": "Joel Parke <joel@Dynazu.com>",
      "homepage": "https://github.com/AngularClass/angular-starter",
      "license": "UNLICENSED",
      "scripts": {
      },
      "dependencies": {
      },
      "devDependencies": {
      },
      "repository": {
        "type": "git",
        "url": "https://github.com/AngularClass/angular-starter.git"
      },
      "bugs": {
        "url": "https://github.com/AngularClass/angular-starter/issues"
      },
      "engines": {
        "node": ">= 4.2.1",
        "npm": ">= 3"
      }
    }
    

    现在在包里什么都没有的地方给出:

    yarn
    yarn install v0.27.5
    [1/4] Resolving packages...
    [2/4] Fetching packages...
    [3/4] Linking dependencies...
    [4/4] Building fresh packages...
    success Saved lockfile.
    $ node-gyp rebuild
    gyp info it worked if it ends with ok
    gyp info using node-gyp@3.5.0
    gyp info using node@7.10.1 | linux | x64
    gyp info spawn /usr/bin/python2
    gyp info spawn args [ '/home/joel/.nvm/versions/node/v7.10.1/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
    gyp info spawn args   'binding.gyp',
    gyp info spawn args   '-f',
    gyp info spawn args   'make',
    gyp info spawn args   '-I',
    gyp info spawn args   '/home/joel/workspace/Tracker3/build/config.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/home/joel/.nvm/versions/node/v7.10.1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   '/home/joel/.node-gyp/7.10.1/include/node/common.gypi',
    gyp info spawn args   '-Dlibrary=shared_library',
    gyp info spawn args   '-Dvisibility=default',
    gyp info spawn args   '-Dnode_root_dir=/home/joel/.node-gyp/7.10.1',
    gyp info spawn args   '-Dnode_gyp_dir=/home/joel/.nvm/versions/node/v7.10.1/lib/node_modules/npm/node_modules/node-gyp',
    gyp info spawn args   '-Dnode_lib_file=node.lib',
    gyp info spawn args   '-Dmodule_root_dir=/home/joel/workspace/Tracker3',
    gyp info spawn args   '--depth=.',
    gyp info spawn args   '--no-parallel',
    gyp info spawn args   '--generator-output',
    gyp info spawn args   'build',
    gyp info spawn args   '-Goutput_dir=.' ]
    gyp info spawn make
    gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
    make: Entering directory '/home/joel/workspace/Tracker3/build'
    make: *** No rule to make target 'Release/obj.target/binding/src/binding.o', needed by 'Release/obj.target/binding.node'.  Stop.
    make: Leaving directory '/home/joel/workspace/Tracker3/build'
    gyp ERR! build error 
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/home/joel/.nvm/versions/node/v7.10.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
    gyp ERR! stack     at emitTwo (events.js:106:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:194:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
    gyp ERR! System Linux 4.12.0-041200-generic
    gyp ERR! command "/home/joel/.nvm/versions/node/v7.10.1/bin/node" "/home/joel/.nvm/versions/node/v7.10.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /home/joel/workspace/Tracker3
    gyp ERR! node -v v7.10.1
    gyp ERR! node-gyp -v v3.5.0
    gyp ERR! not ok 
    error Command failed with exit code 1.
    

    原来是这个“binding.gyp”文件在某个时候留下来导致所有问题。 删除此文件并恢复所有内容:

    yarn:
    
    yarn install v0.27.5
    [1/4] Resolving packages...
    success Already up-to-date.
    Done in 0.12s.
    joel@parke:~/workspace/Tracker3$ yarn
    yarn install v0.27.5
    [1/4] Resolving packages...
    [2/4] Fetching packages...
    warning fsevents@1.1.2: The platform "linux" is incompatible with this module.
    info "fsevents@1.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
    [3/4] Linking dependencies...
    warning "ngrx-store-freeze@0.1.9" has incorrect peer dependency "@ngrx/store@^2.2.1".
    [4/4] Building fresh packages...
    success Saved lockfile.
    $ npm run webdriver:update
    
    > Tracker3@3.1.0 webdriver:update /home/joel/workspace/Tracker3
    > webdriver-manager update
    
    webdriver-manager: using local installed version 12.0.6
    [12:02:08] I/file_manager - creating folder /home/joel/workspace/Tracker3/node_modules/webdriver-manager/selenium
    [12:02:09] I/update - chromedriver: unzipping chromedriver_2.31.zip
    [12:02:09] I/update - chromedriver: setting permissions to 0755 for /home/joel/workspace/Tracker3/node_modules/webdriver-manager/selenium/chromedriver_2.31
    [12:02:11] I/update - geckodriver: unzipping geckodriver-v0.18.0.tar.gz
    [12:02:11] I/update - geckodriver: setting permissions to 0755 for /home/joel/workspace/Tracker3/node_modules/webdriver-manager/selenium/geckodriver-v0.18.0
    Done in 36.46s.
    

    正如预期的那样正确。希望这会在某些时候对其他人有所帮助!感谢所有看过这个的人!特别是https://stackoverflow.com/users/8377060/jack-delson

    【讨论】:

      【解决方案3】:

      获得“没有规则来制作目标...”错误的最简单方法是binding.gyp 中指定的文件是错误的。如果未找到 sources 键中的文件名,则会出现此错误。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,通过以下操作解决了:

        1. 删除了旧的命令行工具

          sudo rm -rf $(xcode-select -print-path)

          并重新安装:

          xcode-select --install

        2. 将节点版本从 11 降级到 8.16.1

          sudo npm install -g n

          sudo n 稳定

          sudo n 8.16.1

          最后,检查你的节点版本:

          节点-v

        【讨论】:

          猜你喜欢
          • 2020-09-11
          • 2012-08-20
          • 2015-03-28
          • 2022-01-15
          • 2016-05-19
          • 2021-12-25
          • 2019-08-30
          • 1970-01-01
          • 2022-01-16
          相关资源
          最近更新 更多